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
硬件连接配置n
图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
图2 选择设备和版本n
打开设备视图,设置设备“属性”下的以太网地址为192.168.0.4,子网掩码为255. 255.255.0。见图3。n
图3 设置以太网地址n
在设备视图的属性窗口中设置时钟存储器,将时钟存储器的地址设置为MB20,并使用其中的M20.5位,0和1信号以1Hz频率切换,用来循环激活发送任务,见图4。n
图4 时钟存储器设置n
3.2 D410PN的配置
打开SCOUT软件,新建一个项目,设置PG/PC接口为电脑的以太网卡,双击“INSERT SIMOTION DEVICE”后,选择相应版本的D410PN插入,并打开硬件组态画面,在其中设置PN口的以太网地址和子网掩码,见图5。n
图5 组态D410PN地址n
4 通信指令
4.1 S7-1200侧的指令调用
TCON,TDISCON,TSEND,TRCV等指令均可以在右侧指令中的“通信—〉开放式用户通信”找到。本文中所有通讯指令均在background 中执行。n
S7-1200在本文中作为Server,通讯开始前先激活TCON指令来建立服务器端口,并等待Client的建立连接请求,一旦通信连接成功建立,此时“REQ”就不再起作用,若想重新建立连接需先调用“TDISCON”断开连接,再从新激活“TCON”重新建立连接。n
图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
图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
图8 TSEND连接参数设置n
图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
图10 数据 DB建立n
若要断开当前连接,则调用TDISCON。成功断开连接后,根据程序段6,“dis con”位会被重新置0。n
图11 TDISCON连接参数设置n
4.2 SIMOTION侧的指令调用
SIMOTION的通信指令可以在Command library中的“Communication->Data transfer”目录下找到。通信程序块“TCP”放在background中运行。n
tcpOpenClient指令,该指令用来在simotion 侧激活客户端端口,并向服务器发送连接请求,若请求成功,则建立连接,并返回连接ID。该指令需使用上跳沿单次触发,此函数只调用一次,得到连接ID后应停止调用。n
图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
图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
图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
图15 SIMOTION侧接收和发送的数据n
PLC侧监控表的监控结果:n
图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