继电器西门子CPU1214C模块

实体公司  现货供应 

西门子代理合作伙伴

上海斌勤电气技术有限公司

有需要的新老顾客欢迎上门提货谈生意(老顾客注意公司地址更改)


相关技术:


S7-1200与D410 TCP 通讯

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,tcpCloseConnection。

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

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 测试所采用的硬件列表

2.2      所使用的软件

§         TIA Portal V11 SP2

§         SCOUT V4.2.1

       

 

2.3      通讯参数设置

硬件连接配置

图1 硬件连接示意图

 

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

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

 

DEVICE

IP Address

 CPU 1214C

192.168.0.4

   D410DP

192.168.0.2

     PC

192.168.0.10

 

表2 IP地址设置

3 项目配置  

3.1 S7-1200的配置

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

   

图2 选择设备和版本

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

   

图3 设置以太网地址

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

        

图4 时钟存储器设置

3.2 D410PN的配置

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

      

     图5 组态D410PN地址

4 通信指令

4.1 S7-1200侧的指令调用

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

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

   

     图6 调用TCON

      “REQ”:激活TCON功能。

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

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

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

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

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

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

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

      

     图7 TCON连接参数设置

          “伙伴”:选择未指定。

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

      “连接类型”:选择TCP。

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

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

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

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

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

   

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

        

     图8 TSEND连接参数设置

     图9 TRCV连接参数设置

       注意:

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

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

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

    

图10 数据 DB建立

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

       

     图11 TDISCON连接参数设置

4.2 SIMOTION侧的指令调用

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

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

   

     图12 tcpOpenClient指令参数设置

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

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

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

   “nextCommand”:

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

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

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

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

结构

名称

数据类型

  functionResult

状态信息,查看

连接是否建立

DINT

connectionId

连接号

DINT

表3 TcpOpenClient返回值结

  

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

        

图13 TcpSend参数设置

   “ConnectionId” :使用tcpOpenClient返回的ID。

   “nextCommand”:

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

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

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

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

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

   “OUT”:输出通信状态。

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

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

     

图14  TcpReceive参数设置

 

 

          “ConnectionId” :使用tcpOpenClient返回的ID。

   “nextCommand”:

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

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

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

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

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

结构

名称

数据类型

functionResult

接收状态信息

DINT

dataLength

接收字节长度

UDINT

 表4 TcpReceive返回值结构

5  实验过程

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

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

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

SIMOTION侧WATCH TABLE监控结果:

                       

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

 

 

 PLC侧监控表的监控结果:

 

 

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