好久没来博客园了,好像最近博客园服务器硬件出了问题,博客园团队还打算买个服务器。最近一直研究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的站点