全国热线电话:
18390808297
![]() |
|
湖南嘉普云自动化设备有限公司
问题:
S7-400中保持数据传输的*性使用的是什么机理?
解答:
*的数据指的是就内容来说是*的,而 且它所描述了在某个时间点的一个称之为*性数据的过程状态。要保持数据的*性,它在传输或处理过程中不得被更新或改动。< /span>
样例 1:< /span>
为了对CPU在循环程序处理过程中有*的过程信号的映像,在程序处理前就把过程信号读入输入的过程映像中,并 且在程序处理后又写到输出的过程映像。然后,在程序处理过程中,用户程序在对操作数区输入(I)和输出(Q) 寻址时并不直接访问信号模块,而是访问CPU 的内部存储区里的过程映像 。< /span>
样例 2:
如果一个通讯块(比如 SFB 14 “GET”, SFB 15 “PUT”)被较高优先级的过程警报OB所中断,就有可能出现不*性。 现在,如果在该过程警报OB中的用户程序更改了已经部分被通讯块处理过的数据,那样的话被传输的数据中,部分是过程警报处理以前时间的数据,部 分则是过程警报处理以後时间的数据,这意味着,此数据是不*的。
SFC 81 "UBLKMOV"
使用 SFC 81 “UBLKMOV”,把一个内存区(源区)的内容*地复制到另一个内存区(目标区)里 。复 制过程不得被操作系统的任何其它动作所打断。
使用SFC 81 “UBLKMOV”,可复制下列内存区:西门子6AV6648-0CC11-3AX0
可复制的大数据量为 512 字节。请注意与CPU性能有关的限制。有关的限制可从操作列表中看到。
既然复制过程不能打断,在使用 SFC 81“UBLKMOV” 时,可增大CPU对报警的响应时间。
源区和目标区不得互相交迭。如 果的目标区大于源区,那么只把与源区里同样多的数据复制到目标区。如果的目标区小于源区,那 么只把目标区能接收的那么多的数据复制入目标区。
通讯块和功能之间的*性
对 S7-400 ,通 讯作业不在循环程序的执行处来处理,而是在程序循环过程中的一个固定的时间段里处理。从系统来讲,数据格式字节,字 和双字永远可以得到*性的处理,就是说传输一个字节,一个字(两个字节)或双字(4个字节)是不会被打断的。
如果通讯块(比如 SFB 12 “BSEND”)只能成对使用(象SFB 12 “BSEND” 和 SFB 13 “BRCV”) 而且它访问公共数据在用户程序中被调用,那么也访问本身数据区,比如通过 “DONE”参数对该数据区的访问,是可以协调的。通 过这些通讯块局部传输的数据的*性,因而可以在用户的程序里得到保证。
使用 S7 的通讯功能时动作是不一样的。用这些功能时目标设备 (比如 SFB 14 “GET”, SFB 15“PUT”) 里的用户程序不要求通讯块。在编程时就必须把*性数据的大小已经考虑在内。
访问 CPU的工作内存
操作系统的通讯功能是以固定长度数据包来访问CPU的工作内存。此数据包的大小与CPU性能有关,S7-400 CPU是32个字节。< /span>
这样就确保了在使用通讯功能时报警响应时间不会被延长。由于这种访问与用户程序异步,你无法*地传输任意个数字节的数据。< /span>
下面将解释为保证数据*性所要遵循的规则。
如果是 SFB 14 “GET”,只要遵循下列规则就可*性地传输数据。
下图给出了一个无法保证数据传输*性的例子。因为它没有遵守*性规则的第二条:被动 CPU (数据发送方)的数据块大小为 8 个字节,而传输的却是 32 个字节。
图 1:数据传输的例子
用于 SFB 15“PUT”或写变量的*性规则
对于 SFB 15 “PUT”,如果遵循下列规则,数据传输将具有*性:
下图为一个数据传输的例子。由 于*性规则的第二条没有得到遵守<被动CPU(数据接收方)的数据块大小只有32 个字节,而发送的却是64个字节>,无 法保证数据的*性。
图 2:无 法保证*性的数据传输
通过SFC 81 “ UBLKMOV”可在S7-400 的用户程序里实现跨几个变量的大数据块*性传输(不可中断的块移动)。
这样,例如通过SFB 14 “ GET”, SFB 15 “PUT”以及读/写变量,可实现对此数据的*性访问。
从一台 DP 标准从站读出*性数据,/ 然后把它*性地写入一台 DP 标准从站。
通过SFC 14 “DPRD_DAT”从一台 DP 标准从站*性地读出数据
通过SFC 14 “DPRD_DAT”(从一台 DP 标准从站读出*性数据), 从一台DP标准从站*性地读出数据。如果数据传输中无错误,则读出的数据被输入由RECORD的目标区。< /span>
目标区必须与你已经用STEP 7为选定的模块组态好的长度*。每次调用SFC 14只能访问一个模块/DP ID 的数据(从组态好的起始地址)。
通过 SFC 15“DPWR_DAT”( 把数据*性地写入一台DP标准从站)把 RECORD 里的数据*性地传输入赋址好的DP 标准从站。
源区的长度必须与通过 STEP 7 为选定模块组态好的长度*。
注意:
PROFIBUS DP标准定义了传输*性用户数据的上限(见下一节)。通常的DP标准从站遵守这些限制。对于较老的CPU (<1999),对 传输*性用户数据存在与 CPU 有关的限制。
请参考这些CPU的技术数据。在关键字 “DP 主站 -每台DP 从站的用户数据” 下去寻找CPU 可以*性地从一台DP标准从站读出数据和*性地写入一台DP标准从站的数据的大长度,一些近期CPU的此项指标已经超过标准DP从站可能或接受的数据长度值。< /span>
*性传输用户数据到一台 DP 从站的上限大值
PROFIBUS DP标准规定了传输*性用户数据到DP从站的上限。这就是为什么在一台DP标准从站里,可用一个数据块来*性地传输大达64 个字 = 128 字节的用户数据。
当组态时,你定义了*性区的大小。该大小用特殊的代码格式(德语缩写: SKF)表示为64 个字 = 128 字节(输入用128个字节,128个字节用于输出)设置的*性数据大长度。再长就不可行了。
这个上限只适用于纯用户数据。诊断数据和参数被分组到完整的数据纪录里,因而总是得到*性地传输。< /span>
在通常的代码格式里(德语缩写: AKF),可为*性数据设置大长度16 个字 = 32 个字节 (32 个字节用于输入,32 个字节用于输出)。再长就不可行了。
在本文里请同样注意, 通常在一个非系统主站 (通过GSD连接)上的CPU 41x 作为 DP 从站时,必 须是用一般代码格式才可加以组态。基于这个理由,作为PROFIBUS DP上从站的 CPU 41x 的传输内存的大长度为16 个字 = 32个字节。
不使用SFC 14 或 SFC 15 时的*性数据访问
*性数据访问 大于 4 个字节时,对于下列的CPU 是可行的(不用SFC 14或SFC 15)。要 被*性传输的一个 DP 从站的数据区数据是被传输到一个过程映像分区的。这样在此区域里的信息永远是*的。然后可用 装载/传输命令 (比如L EW 1) 来访问过程映像。
这为访问*性数据提供了特别方便和有力的选项(低运行开销)。这一方案又为高效地结合和参数化驱动或其它 DP 从站成为可能。< /span>
它适用于下列CPU。固件版本 3.0 以上:
S7-400 CPU | MLFB |
CPU 412-1 | 6ES7 412-1XF03-0AB0 |
CPU 412-2 | 6ES7 412-2XG00-0AB0 |
CPU 414-2 | 6ES7 414-2XG03-0AB0 |
CPU 414-3 | 6ES7 414-3XJ00-0AB0 |
CPU 416-2 | 6ES7 416-2XK02-0AB0 |
CPU 416-3 | 6ES7 416-3XL00-0AB0 |
CPU 417-4 | 6ES7 417-4XL00-0AB0 |
CPU 414-4H | 6ES7 414-4HJ00-0AB0 |
CPU 417-4H | 6ES7 417-4HL01-0AB0 |
表 1:支持*性数据访问的CPU(不用 SFC14/SFC15)
当你进行直接访问时 (比方说 L PEW 或 T PAW),没有 I/O 访问错。
从 采用SFC14/15 方案转向采用过程映像方案时的注意要点:< /b>
样例:
下面的例子 (过程映像分区 3 “TPA 3”)显示了 HW Config 中一种可能的组态。
在输入下的下拉列表里选择 “过程映像分区 -> ---” 意味着过程映像里没有存储内容。只 能用系统功能SFC14/15来处理它。
1. S7通信简介
S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7300/400PLC之间的通信。SIMATIC S7- PN CPU包含一个集成的 PROFINET 接口,该接口除了具有 PROFINET I/O功能,还可以进行基于以太网的S7通信。SIMATIC S7- PN CPU支持无确认数据交换、确认数据交换和单边访问功能。功能块的调用如图1、图2所示。
块 S7-400 | 块 S7-300 | 描述 | 简要描述 |
SFB 8 | FB 8 | 用于发送 | 无确认的快速数据交换,发送数据后无对方接收确认。 |
SFB 9 | FB 9 | 用于接收 | |
SFB 12 | FB 12 | 用于发送 | 确认数据交换,发送数据后有对方接收确认。 |
SFB 13 | FB 13 | 用于接收 | |
SFB 14 | FB 14 | 读数据 | 单边编程读访问。 |
SFB 15 | FB 15 | 写数据 | 单边编程写访问。 |
表1
图1
图2
要通过 S7-PN CPU 的 集成PROFINET 接口实现S7 通信,需要在硬件组态中建立连接。
2. 硬件及网络组态
CPU采用两个315-2PN/DP,使用以太网进行通信。
在STEP7中创建一个新项目,项目名称为PN S7。插入两个S7-300站,在硬件组态中,分别插入CPU 315-2 PN/DP。如图3所示。
图3
新建以太网,打开“NetPro”设置网络参数,选中CPU,在连接列表中建立新的连接。如图4所示。
图4
然后双击该连接,设置连接属性。在“General”属性中块参数ID = 1,这个参数即是下面程序中的参数“ID”。在SIMATIC 315PN-1中激活“Establish an active connection”,作为Client端,SIMATIC 315PN-2作为Server 端。
3. 软件编程
3.1. 无确认数据交换
SFB/FB 8 "USEND" 向类型为“URCV”的远程伙伴SFB/FB发送数据。执行发送过程而不需要和SFB/FB伙伴进行协调。也就是说,在进行数据传送时不需要伙伴SFB/FB进行确认。
S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数R_ID、
ID和SD_1。在每个作业结束之后,可以给R_ID、ID和SD_1参数分配新数值。
S7-400:在控制输入REQ的上升沿处发送数据。通过参数SD_1到SD_4来指向要
发送的数据,但并非都需要用到所有四个发送参数。
然而,必须确保参数SD_1到SD_4/SD_1和RD_1到RD_4/RD_1 (在相应通讯伙
伴SFB/FB "URCV" 上)所定义的区域在以下几个方面保持*:
? ?编号
? ?长度
? ?数据类型
参数R_ID必须在两个SFB中完全相同。如果传送成功完成,则通过状态参数DONE来表示,此时其逻辑数值为1。
SFB/FB 9 "URCV" 从类型为“USEND”的远程伙伴SFB/FB中异步接收数据,并
把接收到的数据复制到组态的接收区域内。
当程序块准备好接收数据时,EN_R输入处的逻辑值为1。可以通过EN_R=0来取
消一个已激活的作业。
S7-300:在EN_R的每个上升沿处应用参数R_ID、ID和RD_1。在每个作业结束
之后,可以给R_ID、ID和RD_1参数分配新数值。
S7-400:通过参数RD_1到RD_4来指向接收数据区。
必须确保参数RD_i/RD_1和SD_i/SD_1 (在相应通讯伙伴SFB/FB "USEND"
上)所定义的区域在以下几个方面保持*:
?? 编号
? ?长度
? ?数据类型。
通过NDR状态参数逻辑数值为1来指示已经成功完成复制处理过程。参数R_ID必须在两个SFB/FB上完全相同。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB8,FB9如图5、图6所示:
图5
程序中的参数说明见表2
参数 | 描述 | 数据类型 | 存储区 | 描述 |
REQ | INPUT | BOOL | I、Q、M、D、L | 上升沿触发工作 |
ID | INPUT | WORD | M、D、常数 | 连接ID |
R_ID | INPUT | DWORD | I、Q、M、D、L、常数 | 连接号,相同连接号的功能块互相对应发送/接收数据 |
DONE | OUTPUT | BOOL | I、Q、M、D、L | 为1时,发送完成 |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,有故障发生 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 状态代码 |
S7-300: SD_1 S7-400: SD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D、T、Z I、Q、M、D、T、C | 发送数据区 |
表2 FB8参数说明
图6
程序中的参数说明见表3
参数 | 参数 | 数据类型 | 存储区 | 描述 |
EN_R | INPUT | BOOL | I、Q、M、D、L、常数 | 为1时,准备接收 |
ID | INPUT | WORD | M、D、常数 | 连接ID |
R_ID | INPUT | DWORD | I、Q、M、D、L、常数 | 连接号,相同连接号的功能块互相对应发送/接收数据 |
NDR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,接收完成 |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,有故障发生 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 状态代码 |
S7-300: RD_1 S7-400: RD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D、T、Z I、Q、M、D、T、Z | 接收数据区 |
表3 FB9参数说明
同样,在SIMATIC 315PN-2的OB1中,调用FB8/FB9。通信双方的“R_ID”均设为0。将SIMATIC 315PN-1的MB100-MB109赋值B#16#02,在SIMATIC 315PN-2中,将FB9的“EN_R”置1,然后在SIMATIC 315PN-1中,将FB8中“REQ”设置上升沿信号,此时SIMATIC 315PN-2的MB110-MB119接收到B#16#02。如图7所示。
图7
同理,将SIMATIC 315PN-2 的MB100-MB109赋值为B#16#03,SIMATIC 315PN-1的MB110-MB119接收到B#16#03。如图8所示。
图8
3.2. 确认数据交换
SFB/FB 12 "BSEND" 向类型为“BRCV”的远程伙伴SFB/FB发送数据。通过这种
类型的数据传送,更多的数据可以在通讯伙伴之间传输,超过任何其它用于组态的
S7连接的通讯SFB/FB所能传输的数据量,通过集成PN口的S7-400和S7-300是65534字节。
要发送的数据区是分段的。各个分段单独发送给通讯伙伴。通讯伙伴在接收到后
一个分段时对此分段进行确认,该过程与相应SFB/FB "BRCV" 的调用无关。在调用块之后,当在控制输入REQ上有上升沿时,发送作业被激活。发送用户存储区中的数据与处理用户程序是异步执行的。
由SD_1起始地址和要发送数据的大长度。可以通过LEN来确定数据域的作业长度。在这种情况下,LEN替换SD_1的长度区域。参数R_ID必须在相应的两个SFB/FB上完全相同。如果在控制输入R处有上升沿,则当前数据传送将被取消。如果传送成功完成,则通过将状态参数DONE的数值设置为1来进行指示。如果状态参数DONE或ERROR的数值为1,则在前一个发送处理结束之前,不能处理新的发送作业。
SFB/FB 13 "BRCV" 接收来自类型为“BSEND”的远程伙伴SFB/FB的数据。在收
到每个数据段后,向伙伴SFB/FB发送一个确认帧,同时更新LEN参数。在块调用完毕,并且在控制输入EN_R数值为1之后,块准备接收数据。可以通过EN_R=0来取消一个已激活的作业。
由RD_1起始地址和接收区的大长度。由LEN指示已接收数据域的长度。
从用户存储区中接收数据与处理用户程序是异步执行的。参数R_ID必须在相应的两个SFB/FB上完全相同。通过状态参数NDR的数值为1来指示所有数据段的无错接收。接收到的数据保持不变,直到通过EN_R=1来重新调用SFB/FB 13为止。如果在数据的异步接收期间调用块,则将引发一个警告,该警告通过STATUS参数输出;如果当控制输入EN_R数值为0时进行调用,则接收将被终止,并且SFB/FB将返回到它的初始状态。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB12,FB13如图9、图10所示:
图9
程序中的参数说明见表4
参数 | 描述 | 数据类型 | 存储区 | 描述 |
REQ | INPUT | BOOL | I、Q、M、D、L | 上升沿触发工作 |
R | INPUT | BOOL | I、Q、M、D、L、常数 | 复位,终止数据交换 |
ID | INPUT | WORD | M、D、常数 | 连接ID |
R_ID | INPUT | DWORD | I、Q、M、D、L、常数 | 连接号,相同连接号的功能块互相对应发送/接收数据 |
DONE | OUTPUT | BOOL | I、Q、M、D、L | 为1时,发送完成 |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,有故障发生 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 状态代码 |
SD_1 | IN_OUT | ANY | S7-300:M、DS7-400:I、Q、M、D、T、Z | 发送数据区 |
LEN | IN_OUT | WORD | I、Q、M、D、L | 发送数据的长度 |
表4 FB12参数说明
图10
程序中的参数说明见表5
参数 | 描述 | 数据类型 | 存储区 | 描述 |
EN_R | INPUT | BOOL | I、Q、M、D、L、常数 | 为1时,准备接收 |
ID | INPUT | WORD | M、D、常数 | 连接ID |
R_ID | INPUT | DWORD | I、Q、M、D、L、常数 | 连接号,相同连接号的功能块互相对应发送/接收数据 |
NDR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,接收完成 |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,有故障发生 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 状态代码 |
RD_1 | IN_OUT | ANY | S7-300:M、DS7-400:I、 Q、M、D、T、C | 接收数据区 |
LEN | IN_OUT | WORD | I、Q、M、D、L | 接收到的数据长度 |
表5 FB13参数说明
西门子6AV6648-0CC11-3AX0