西门子NCU571.4

6FC5357-0BB14-0AA0SINUMERIK 840D/DE NCU 571.4,400MHz,64MB 不带系统软件 存储器:NC 0.5MB,PLC 96KB PROFIBUS-DP 准备

描述
可以通过CPU 集成的 PROFINET 接口或 CP443-1 Advanced 使用工业以太网 "开放用户通信方式" 进行数据交换, 例如: 这种方式支持下列通信协议:

  • TCP

  • ISO-on-TCP

  • UDP

使用 ISO-on-TCP 协议的工业以太网 "开放用户通信方式" 可以使用下列通信块:

  • FB65 "TCON" 用于建立连接

  • FB66 "TDISCON" 用于断开连接

  • FB63 "TSEND" 用于发送数据

  • FB64 "TRECV" 用于接收数据

这些通信功能块可以在函数库 Standard Library -> Communication Blocks 中找到。
在标准程序库中将上述通信功能块的版本拷贝至用户程序中,然后编写程序时调用。
用于建立 ISO-on-TCP 连接的连接参数存储于一个数据结构体中。在这次例子中,使用数据结构 "OUCW_1",在这个例子中数据结构保存在 DB1 数据块中,并由用户进行参数化。

注意


  • ISO-on-TCP 通信连接不在 NetPro 中配置。

表 01 提供了数据结构 "OUCW_1" 中哪些连接数据被保存。
 

字节参数数据类型描述
0 to 1block_lengthWORD数据结构 "OUCW_1" 的长度
2 to 3idBYTE对连接的引用
数值范围:W#16#0001 to W#16#0FFF
必须为该连接块的 ID 指定一个参数值。
4connection_typeBYTEISO-on-TCP 协议版本:B#16#12
5active_estBOOLEAN建立连接方式的标识号
  • FALSE:被动创建连接

  • TRUE:主动创建连接

6local_device_idBYTE通过 CPU 315-2 PN/DP 集成的 PROFINET 接口进行通信:B#16#02
7local_tsap_id_lenBYTE所使用的参数 local_tsap_id 的长度
如果连接类型为 B#16#12,可能的值:2 to 16
8rem_subnet_id_lenBYTE该参数当前未使用。必须将 B#16#00分配给它。
9rem_staddr_lenBYTE远程连接终端的地址长度:
  • 0:未指定,即参数 rem_staddr 不相关。

  • 4:参数 rem_staddr 中有效的 IP 地址。

10rem_tsap_id_lenBYTE所使用的 rem_tsap_id 参数的长度
如果连接类型为 B#16#12,可能的值:0 or 2 to 16
  • 主动端:2 to 16

  • 被动端:0 or 2 to 16 (0 代表未指定)

11next_staddr_lenBYTE所使用的参数 next_staddr 的长度
12 to 27local_tsap_idARRAY [1..16] of BYTE本地 TSAP,例如 ISO1:
local_tsap_id[1] = B#16#49
local_tsap_id[2] = B#16#53
local_tsap_id[3] = B#16#4F
local_tsap_id[4] = B#16#31
local_tsap_id[5-16] = B#16#00

注意
如果 CPU 不支持 ASCII 格式的TSAP,那么 TSAP 的头两个字节必须写入数值 B#16#E0 和 B#16#02。

28 to 33rem_subnet_idARRAY [1..6] of BYTE该参数当前未使用。必须将 B#16#00 分配给它。
34 to 39rem_staddrARRAY [1..6] of BYTE远程连接端点的 IP 地址,例如 192.168.0.30:
rem_staddr[1] = B#16#C0
rem_staddr[2] = B#16#A8
rem_staddr[3] = B#16#00
rem_staddr[4] = B#16#1E
rem_staddr[5-6] = B#00 (保留)
40 to 55rem_tsap_idARRAY [1..16] of BYTE远程连接端点的 TSAP,例如 ISO1:
rem_tsap_id[1] = B#16#49
rem_tsap_id[2] = B#16#53
rem_tsap_id[3] = B#16#4F
rem_tsap_id[4] = B#16#31
rem_tsap_id[5-16] = B#16#00

注意
如果 CPU 不支持 ASCII 格式的 TSAP,那么 TSAP 的头两个字节必须写入数值 B#16#E0 和 B#16#02。

56 to 61next_staddrARRAY [1..6] of BYTEnext_staddr[1-6] = B#16#00

注意
如果 local_device_id=B#16#00,那么这需要指定 (本地) CP 的机架和插槽。

62-63spareWORD保留,分配 W#16#0000 给该参数。

表 01 

以下 CPU 支持 ASCII 格式的 TASP。

  • CPU 314C-2 PN/DP

  • CPU 315(F)-2 PN/DP, CPU 317(F)-2 PN/DP V3.1 及以上

  • CPU 315T-3 PN/DP, CPU 317T-3 PN/DP, CPU 317TF-3 PN/DP

  • CPU 319(F)-3 PN/DP

  • CPU 414-3 PN/DP, CPU 416(F)-3 PN/DP V5.2 及以上

  • CPU 414F-3 PN/DP, CPU 412-2 PN

  • CPU 412-5H PN/DP, CPU 414-5H PN/DP, CPU 416-5H PN/DP, CPU 417-5H PN/DP

  • IM 151(F)-8 PN/DP CPU V2.7 及以上

  • IM 154(F)-8 CPU V3.2 及以上

简单例程描述
S7 程序中包含 FB65 "TCON 的调用和带有 "OUCW_1"  数据结构的 DB1,其中 "OUCW_1" 保存着创建 ISO-on-TCP 连接的参数。S7 程序中还包含函数库 Standard Library -> Communication Blocks 中函数 FB63 "TSEND" 和 FB64 "TRCV" 的调用 。通过调用 FB63 "TSEND" 块,可以将数据发送给一个 S7 站或一个 S5 站或一个 PC 站或第三方系统。通过调用 FB64 "TRCV" 块,可以接收从一个 S7 站或一个 S5 站或一个 PC 站或第三方系统发送的数据。

首先在 S7-300 站中创建硬件配置,将 MB100 作为时钟脉冲。发送请求由时钟脉冲触发。存盘编译并将硬件配置到 CPU 中。

STEP 7 程序包含程序块 OB100, OB1, FB400, DB400, FB420, UDT65 和 FB63, FB64, FB65 及 FB66。

OB100
OB100是一个重启 OB,当 CPU 重新启动时执行 (暖起动)。 在这个 OB 块中,次的通信可以通过 M0.3 触发。

OB1
OB1是循环执行。FB1 在 OB1 中调用,其背景数据块是 DB11,且使用 M0.3 作为 INIT_COM 参数,使用M10.0 作为 ABORT 参数。FB1 被调用后,M0.3 在OB1 中被复位。


图 01

FB1
FB1 在 OB1 中循环调用。下述功能块在 FB1 中被调用。

  • FB65 "TCON"

  • FB63 "TSEND"

  • FB64 "TRCV"

  • FB66 "TDISCON"

定义连接数目
用户可以单独修改连接数目,根据配置在 FB1 的网络段 2 中修改连接数目。连接数目保存在一个静态变量中,如背景数据块 DB11 中。本示例定义的连接数为 "1"。 


图 02

建立连接
通过 FB65 "TCON" 的 "REQ" 输入参数的上升沿来开始建立一个连接。带有连接参数的数据结构 "OUCW_1" 被整合到数据块 DB1 中。
 一旦FB65 "TCON" 的输入参数 "CONNECT" 使能,包含连接参数的存储区即被指定。
在系统启动后连接被建立。除非调用 FB66 "TDISCON",或者 CPU 进入 STOP 模式,或者切断电源,该连接才会断开。

西门子NCU571.4图 03

发送请求可通过一个上升沿触发 FB63 "TSEND" 的输入参数 "REQ" 来完成。发送请求由时钟位 M10.6 和变量 "SEND_BUSY" 控制。如果发送请求开始执行,那么 "SEND_BUSY" 就被置位。这时无法触发一个新的发送请求。
用户在输入参数 "DATA" 指定发送数据的存储区。
用户在输入参数 "LEN" 指定发送字节长度。
本示例中,发送数据存放在 DB100 中,将100 个字节数据发送给伙伴。
输出参数 "DONE","ERROR" 和 "STATUS" 用来评估工作状态。


图 04

如果发送任务成功完成,"SEND_BUSY" 被置位。一个新的发送任务此时可以被触发。
如果发送任务完成并带有错误,那么 "SEND_BUSY" 同样会被复位,同时 FB63 的 "STATUS" 输出参数会保存一个用来进行错误分析的数值。


图 05


Fig. 06

ISO-on-TCP 连接建立后,就可以接收数据。
用输入参数 "DATA" 和 "LEN" 来指定要保存接收数据的数据区的地址和长度。
本示例中,接收 100 字节的数据并保存在 DB200 中。


Fig. 07

输出参数 "NDR" 用于表示新数据已经被接收。输出参数 "RECV_LEN" 表示被接收数据的长度。
如果数据被成功接收,那么输出参数 "RECV_LEN" 的值被保存。


Fig. 08

如果数据接收没有成功,那么输出参数 "STATUS" 的值被保存并用来评估。


Fig. 09

用户可以使用 FB66 "TDISCON" 断开 ISO-on-TCP 连接。可以使用 FB66 "TDISCON" 输入参数 "REQ" 的上升沿来启动断开 ISO-on-TCP 连接的请求。


Fig. 10

说明

下面步骤解释如何将 S7-400 CPU 配置为 DP 从站连接到外部的 DP 主站或其他项目中 DP 的主站。

在S7-400 CPU项目中组态(DP 从站)

  1. 组态硬件

  2. 将S7-400 CPU的DP接口设置为DP从站

        
        图.1

3. 组态DP从站的输入/输出条目

   
    图. 2
 

4. 将 从站设置为DP主站和相同的波特率和总线行规。
  
注意
总线行规“DP”适用于大多数的 DP 总线配置。对某些总线布局,需要特殊的参数。在这些情况下,可以使用“标准”或“用户自定义”总线行规。
  
图. 3
 

5. 将配置到 S7-400 CPU


DP主站项目中组态Configuration in the project of the DP master

  1. 在 DP 主站的编程工具中配置 DP 从站,可以在“PROFIBUS DP > Other field devices > PLC > SIMATIC”下的 HW 目录找到作为 DP 从站的 S7-400。

  2. 确认在“S7-400 DP slave”中有 3 个空模块可用。如果有必要,插入 3 个空模块。.
      

    图. 4

  3. 配置模块,注意模块的正确顺序。 
      

    图. 5

下表显示主站和从站的输入输出接口如何匹配。

 DP 主站 DP S从站



类型长度一致性类型长度一致性
输出7 wordsTotal length 输入7 wordsTotal length
输出10 wordsUnit输入10 words Unit
输入2 wordsTotal length输出2 wordsTotal length
输入4 wordsUnit输出4 wordsUnit



西门子NCU571.4