西门子_TDC_数据耦合小经验

  好久没来博客园了,好像最近博客园服务器硬件出了问题,博客园团队还打算买个服务器。最近一直研究TDC的东西,奶奶的扫把,

感觉TDC东西就是很复杂,不像S7的LAD/FBD/STL逻辑性强,可以省去很多的中间变量,直接进行地址寻址就行,这也许就是为什么

TDC的循环扫描时间比S7 400块的原因。下面是最近学习TDC的一些小经验,在此分享一下。

TDC如果有两个CPU,hwconfig出错

1、 在TDC硬件配置过程中,如果有两个CPU模块必须组态一个通讯模块:DP、以太网或者MPI的都可以。

而在S7 400的多值运算(即单机架多CPU)过程中不需要耦合通讯模块,这是S7 400与Simatic TDC之间的区别。

【TDC单机架单CPU数据耦合】

本地CPU数据耦合方式需要在本地CPU中创建一块通讯缓存区域;本地CPU耦合方式下
会分配1MB的地址空间用于数据通讯。

通过初始化耦合功能块 @LOCAL 初始化所有本地数据耦合,并且监控所有本地数据耦合;
数据耦合必须在耦合使能后才可以使用。


1、首先配置硬件

根据实际硬件配置进行硬件组态

2、利用 @LOCAL 功能块初始化数据缓冲区域

3、利用 CTV 功能块定义“通讯通道名”、数据刷新模式、同时定义 “数据虚拟通道名”
其中通讯通道名 AT、数据虚拟通道名 CRT 是用户自定义的。

4、利用 NOP 数据缓存功能块定义发送的数据; 需要用到 CTV定义的数据虚拟通道名

5、利用 CRV 功能块接收数据

其中 CRV的数据通道名 与 CTV定义的通道名 AT必须一致;数据刷新模式必须一致;

并接收数据虚拟通道名;

6、利用 NOP 数据缓存功能块接收缓存中的数据; 需要用到 CRV定义的 "数据虚拟通道名"

【TDC单机架多CPU数据耦合】

方式1:

利用 $Signal 信号的方式进行CPU间的数据交换

1、对于任意功能块的输出信号,配置其interconnect address

2、在Global operand 中定义其为 $signal ,并自定义其 “信号名称”

3、在要通讯的CPU的CFC中,首先采用 NOP 进行数据接收;

将NOP的 X 端的输入定义为 $signal ,并将 NOP 的X端的名称选择为前面定义的 “信号名称”即可。

Tip:
发送和接收的数据类型必须一致
适用于小数据量的传输


方式2:
利用通讯缓存区进行配置

通讯缓存区进行配置必须有 CP50M0 或者 CP51M1 通讯模板

1、首先利用 @GLOBAL 对通讯模版 CP50M0或者CP51M1 进行初始化

初始化可以再任意一块 CPU 中进行


2、在发送数据方 CPU 中利用 CTV 定义发送通道名、虚拟数据通道

发送通道名 AT 可以自定义————与后面的接收通道名一致

虚拟通道名可以自定义————被发送的数据需要连接到虚拟通道中

3、利用 NOP 在 发送数据方 CPU 中定义需要发送的数据

4、在接收数据方 CPU 中利用CRV定义接收数据通道名、接收虚拟数据通道

接收数据通道名AR 必须与发送方的一致

接收虚拟数据通道名可以自定义———— 接收到的数据连接到虚拟通道中

5、利用 NOP 在接收数据方 CPU 中接收数据


Tip:
两个CPU间必须有通讯模版 CP50M0/CP51M1
接收和发送的数据类型必须一致


方式3、
利用以太网模块 CP51M1进行耦合

1、必须组态 CP51M1 通讯模板

2、配置 IP地址、子网掩码、路由器地址(如果在网络段中有路由器的话)

3、利用@TCP/IP功能块初始化 CP51M1 通讯模板

4、利用 CTV 发送数据、CRV接收数据; 在一个CPU中既需要有CTV,也必须有CRV

5、利用 NOP 从虚拟缓存通道中获取数据、或者利用 NOP 将数据发送到虚拟缓存通道

Tip:
CRV的数据通道名为: 通道名.通讯方式T或者U-本地端口号(5位数字)

CTV的数据通道名为: 通道名.通讯方式T或者U-本地端口号.远程通讯IP地址(12位数字)-远程通讯端口号

适合于与其他站点通讯,比方说S7 300/400 PLC的站点

原文地址:https://www.cnblogs.com/volcanol/p/2735166.html