S7-1200与D410 TCP 通讯

n

1 概述

本文介绍了通过OPEN IE的方式实现S7-1200与SIMOTION D410PN之间的TCP通信的方法,包括通信的基本配置、组态和编程等内容。S7-1200实现TCP通讯的指令有两种,一是不带连接的指令(TCON,TDISCON,TSEND,TRCV),另一种是带连接的指令(T RCV_C,TSEND_C);SIMOTON包含的通信指令包括tcpOpenClient,tcpOpenServe r,tcpSend,tcpReceive,tcpCloseSever,tcpCloseCoection。n

本文选用S7-1200不带连接的指令TCON,TDISCON,TSEND,TRCV,实现与D410 PN的通讯。n

2 S7-1200与D410PN装置的连接

2.1 硬件配置列表

设备

订货号

版本

CPU 1214C DC/DC/DC

6ES7214-1AE30-0XB0

V2.2

D410PN

6AU1410-0AB00-0AA0

Version B, FW V4.2

SCANLANCE X208

6GK5208-0BA10-2AA3

V3.1

表1 测试所采用的硬件列表n

2.2 所使用的软件

§ TIA Portal V11 SP2

§ SCOUT V4.2.1

2.3 通讯参数设置

硬件连接配置n

S7-1200与D410 TCP 通讯

图1 硬件连接示意图n

CPU 1214C和D410PN本身都带有集成PN口,可以直接使用。n

IP 地址设置(子网掩码均为255.255.255.0):n

DEVICE

IP Address

CPU 1214C

192.168.0.4

D410DP

192.168.0.2

PC

192.168.0.10

表2 IP地址设置n

3 项目配置  

3.1 S7-1200的配置

打开TIA Portal软件,新建一个项目,在“添加新设备”中选择所需的硬件及版本,如图2所示。n

   S7-1200与D410 TCP 通讯

图2 选择设备和版本n

   打开设备视图,设置设备“属性”下的以太网地址为192.168.0.4,子网掩码为255. 255.255.0。见图3。n

   S7-1200与D410 TCP 通讯

图3 设置以太网地址n

在设备视图的属性窗口中设置时钟存储器,将时钟存储器的地址设置为MB20,并使用其中的M20.5位,0和1信号以1Hz频率切换,用来循环激活发送任务,见图4。n

S7-1200与D410 TCP 通讯

图4 时钟存储器设置n

3.2 D410PN的配置

打开SCOUT软件,新建一个项目,设置PG/PC接口为电脑的以太网卡,双击“INSERT SIMOTION DEVICE”后,选择相应版本的D410PN插入,并打开硬件组态画面,在其中设置PN口的以太网地址和子网掩码,见图5。n

    S7-1200与D410 TCP 通讯

图5 组态D410PN地址n

4 通信指令

4.1 S7-1200侧的指令调用

   TCON,TDISCON,TSEND,TRCV等指令均可以在右侧指令中的“通信—〉开放式用户通信”找到。本文中所有通讯指令均在background 中执行。n

S7-1200在本文中作为Server,通讯开始前先激活TCON指令来建立服务器端口,并等待Client的建立连接请求,一旦通信连接成功建立,此时“REQ”就不再起作用,若想重新建立连接需先调用“TDISCON”断开连接,再从新激活“TCON”重新建立连接。n

   S7-1200与D410 TCP 通讯

图6 调用TCONn

“REQ”:激活TCON功能。n

“ID”:设置所建立连接的ID,以后的TSEND、TRCV、TDISCON均使用此ID。n

“CONNECT”:连接配置DB,在配置完TCON参数后自动生成。n

“Done”:建立连接任务完成后置1。n

“BUSY”:建立连接任务执行中置1。n

“ERROR”为1时,在STATUS中显示错误代码,“ERROR”为0时,在STATUS中显示指令执行状态代码。   n

当连接建立成功后,通过程序段2可以将“opensever”置0。n

   在调用TCON指令时系统会要求设置连接参数,见图7。n

S7-1200与D410 TCP 通讯

图7 TCON连接参数设置n

“伙伴”:选择未指定。n

“地址”:设置与S7-1200通讯的SIMOTION的地址。n

“连接类型”:选择TCP。n

“连接ID”: 发送、接收和连接断开所使用的ID。n

   “连接数据”:设置新建或使用已有的连接DB。n

   “主动建立连接”:选择主动建立连接的一方为客户端,另一方为服务器。n

   “端口”:设置本地和伙伴的端口号,在SIMOTION的指令中会用到这里。n

   设置TCON参数时要先选择“连接数据”中的“新建”,建立一个新的Coection DB,然后再填写各个参数。 n

   n

  在通讯成功建立后,激活TSEND,TRCV指令(将发送指令的“REQ”端置1,将接收指令的“EN_R”置1),用来发送和接受数据。n

 S7-1200与D410 TCP 通讯

图8 TSEND连接参数设置n

S7-1200与D410 TCP 通讯

图9 TRCV连接参数设置n

注意:n

(1) 在建立“DATA”中要插入的发送数据和接受数据DB时,其块访问的方式必须是“标准-与S7-300/400兼容”,否则在激活该指令时会报错,见图10。n

(2) TSEND与TRCV的“ID”必须与TCON中设置的相同,而此“ID”与SIMOTION中的“ID”未必相同。n

(3) TRCV在接收数据成功后,“NDR”会自动置1,且“RCVD_LEN”会显示接收到的数据长度。n

    S7-1200与D410 TCP 通讯

图10 数据 DB建立n

    若要断开当前连接,则调用TDISCON。成功断开连接后,根据程序段6,“dis con”位会被重新置0。n

   S7-1200与D410 TCP 通讯

图11 TDISCON连接参数设置n

4.2 SIMOTION侧的指令调用

   SIMOTION的通信指令可以在Command library中的“Communication->Data transfer”目录下找到。通信程序块“TCP”放在background中运行。n

   tcpOpenClient指令,该指令用来在simotion 侧激活客户端端口,并向服务器发送连接请求,若请求成功,则建立连接,并返回连接ID。该指令需使用上跳沿单次触发,此函数只调用一次,得到连接ID后应停止调用。n

   S7-1200与D410 TCP 通讯

图12 tcpOpenClient指令参数设置n

“port”:设置simotion本地端口号。n

   “severAddress”:设置通讯服务器(S7-1200)地址(192.168.0.4)。n

   “serverport”:设置服务器(S7-1200)端口号,必须与S7-1200组态中设置的相同。n

   “nextCommand”:n

   IMMEDIATELY:命令与后续所要执行的命令同步执行。n

   WHEN_COMMAND_DONE:命令执行或失败后执行后续的命令,异步执行。n

   本文中将程序放在simotion的background中执行,因此若使用WHEN_COMMAND_DONE模式,有可能在该命令执行时间过长情况下导致background执行超时,系统报错停机。n

   “OUT”:函数调用返回信息,包括执行状态和返回的连接ID,后面的发送和接收指令均使用该ID。数据类型为结构体(StructRetTcpOpenClient),参考表3。

结构

名称

数据类型

  functionResult

状态信息,查看n

连接是否建立

DINT

coectionId

连接号

DINT

表3 TcpOpenClient返回值结n

   TcpSend指令用于发送数据,与S7-1200的接收指令相对应,可循环调用。n

S7-1200与D410 TCP 通讯

图13 TcpSend参数设置n

   “CoectionId” :使用tcpOpenClient返回的ID。n

   “nextCommand”:n

   IMMEDIATELY:命令与后续所要执行的命令同步执行。n

   WHEN_COMMAND_DONE:命令执行或失败后执行后续的命令,异步执行。n

   本文中将程序放在simotion的background中执行,因此若使用WHEN_COMMAND_DONE模式,有可能在该命令执行时间过长情况下导致background执行超时,系统报错停机。n

“DataLength”:发送数据的字节长度,本例为8,发送数据区的前8个字节。n

   “Data”:发送数据区,数据类型为数组,ARRAY[0..4095] OF BYTE。n

   “OUT”:输出通信状态。n

注意:SIMOTION的发送区(接收区)与PLC的接收区(发送区)数据长度必须一致。n

    TcpReceive指令用于发送数据,与S7-1200的接收指令相对应,可循环调用。n

    S7-1200与D410 TCP 通讯

图14 TcpReceive参数设置n

“CoectionId” :使用tcpOpenClient返回的ID。n

   “nextCommand”:n

   IMMEDIATELY:命令与后续所要执行的命令同步执行。n

   WHEN_COMMAND_DONE:命令执行或失败后执行后续的命令,异步执行。n

   本文中将程序放在simotion的background中执行,因此若使用WHEN_COMMAND_DONE模式,有可能在该命令执行时间过长情况下导致background执行超时,系统报错停机。n

“receivevarible”:接收数据区,数据类型为数组,ARRAY[0..4095] OF BYTE。n

   “OUT”:调用函数返回信息,包括调用状态和接收的字节数量。数据类型为结构体(StructRetTcpReceive),参考表4。

结构

名称

数据类型

functionResult

接收状态信息

DINT

dataLength

接收字节长度

UDINT

 表4 TcpReceive返回值结构n

5 实验过程

本例中使用的程序可以在“S7-1200.zip (1350 KB) ( 1350 KB ) ”和“D410.zip (1597 KB) ( 1597 KB ) ”这两个压缩包中找到。n

首先在S7-1200侧激活建立连接的指令“TCON”,等待SIMOTION侧的连接请求,接着在SIMOTION侧激活打开客户端指令“TcpOpenClient”,发送建立连接的请求。请求成功后,“TcpOpenClient”的返回值结构中的functionResult会显示“0”,同时在coec tionId中会返回ID(此ID与PLC中设置的ID未必一致)。n

之后分别使能PLC侧和SIMOTION侧的发送接收指令,开始数据传送。n

SIMOTION侧WATCH TABLE监控结果:n

                       S7-1200与D410 TCP 通讯

图15 SIMOTION侧接收和发送的数据n

 PLC侧监控表的监控结果:n

 S7-1200与D410 TCP 通讯

图16 PLC侧接收和发送的数据n

如果您对该文档有任何建议,请将您的宝贵建议提交至www.4008104288.com.cn

驱动技术下载中心http://www.ad.siemens.com.cn/download/DocList.aspx?TypeId=0&CatFirst=85 n

驱动技术全球技术资源http://support.automation.siemens.com/CN/view/zh/10803928/130000

找答案驱动技术版区:http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1038 n

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc329096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论