S7-400中数据的一致性,所用机理的总结

问题:
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”,可复制下列内存区:

  • 位存储器
  • DB内容
  • 输入的过程映像
  • 输出的过程映像

可复制的最大数据量为 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”或读变量的一致性规则

如果是 SFB 14 “GET”,只要遵循下列规则就可一致性地传输数据。

  • 主动CPU(数据接收方):通过调用SFB 14读出OB中接收区的数据,或者,如果无法这样做的话,r在SFB 14的处理结束后读出接收区的数据。
  • 被动CPU (数据发送方):按照被动CPU(数据发送方)规定的数据块的大小写入与发送区大小等量的数据。
  • 被动 CPU (数据发送方):在封锁中断的情况下把要发送的数据写入发送区。</span>

    下图给出了一个无法保证数据传输一致性的例子。因为它没有遵守一致性规则的第二条:被动 CPU(数据发送方)的数据块大小为 8 个字节,而传输的却是 32 个字节。

S7-400中数据的一致性,所用机理的总结

图 1:数据传输的例子

用于 SFB 15“PUT”或写变量的一致性规则

对于 SFB 15 “PUT”,如果遵循下列规则,数据传输将具有一致性:

  • 主动CPU (数据发送方): 把来自调用SFB 15 的OB 中的数据写入发送区。如果不可能,在第一次调用 SFB 15 结束后写入发送区。
  • 主动CPU (数据发送方):把按照被动 CPU (数据发送方)指定的块大小的数据写入发送区。</span>
  • 被动CPU (数据接收方): 在封锁中断的情况下,从接收区里读出收到的数据。</span>

    下图为一个数据传输的例子。由于一致性规则的第二条没有得到遵守<被动CPU(数据接收方)指定的数据块大小只有32 个字节,而发送的却是64个字节>,无法保证数据的一致性。

S7-400中数据的一致性,所用机理的总结

图 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 标准从站

通过 SFC 15“DPWR_DAT”(把数据一致性地写入一台DP标准从站)把 RECORD 里的数据一致性地传输入赋址好的DP 标准从站。
源区的长度必须与通过 STEP 7 为选定模块组态好的长度一致。

注意:
PROFIBUSDP标准定义了传输一致性用户数据的上限(见下一节)。通常的DP标准从站遵守这些限制。对于较老的CPU (<1999),对传输一致性用户数据存在与 CPU 有关的限制。
请参考这些CPU的技术数据。在关键字 “DP 主站 -每台DP 从站的用户数据” 下去寻找CPU可以一致性地从一台DP标准从站读出数据和一致性地写入一台DP标准从站的数据的最大长度,一些近期CPU的此项指标已经超过标准DP从站可能或接受的数据长度值。</span>

一致性传输用户数据到一台 DP从站的上限最大值
PROFIBUSDP标准规定了传输一致性用户数据到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

CPU412-1 6ES7412-1XF03-0AB0
CPU412-2 6ES7412-2XG00-0AB0
CPU414-2 6ES7414-2XG03-0AB0
CPU414-3 6ES7414-3XJ00-0AB0
CPU416-2 6ES7416-2XK02-0AB0
CPU416-3 6ES7416-3XL00-0AB0
CPU417-4 6ES7417-4XL00-0AB0
CPU414-4H 6ES7414-4HJ00-0AB0
CPU417-4H 6ES7417-4HL01-0AB0

表 1:支持一致性数据访问的CPU(不用 SFC14/SFC15)

当你进行直接访问时 (比方说 L PEW 或 T PAW),没有 I/O访问错。

从 采用SFC14/15 方案转向采用过程映像方案时的注意要点:</b>

  • 当从SFC14/15 方案转向过程映像方案时,不建议同时使用系统功能以及过程映像。基本上讲,在用系统功能 SFC15 写时,过程映像是被追踪的,但 读出的时候就不被追踪了。 这意味着,过程映像值与系统功能 SFC14 的值之间的一致性是无法保证的。< /span>
  • 在SFC 14/15 方案里,SFC 50 “RD_LGADR”输出的地址区不同于过程映像方案的地址区
  • 如果使用 CP 443-5 ext,同时使用系统功能以及过程映像会导致出现下列出错消息:“没有对过程映像的读/写”,或是“不可能再用SFC 14/15 进行读/写”。

    样例:
    下面的例子 (过程映像分区 3 “TPA 3”)显示了 HW Config 中一种可能的组态。

    • TPA 3 在输出处:这50 个字节在过程映像分区3 里是一致的(下拉列表 “一致性范围-> 总长度”),因而可以通过一般的 “Load input xy”命令来读它。
    • 在输入下的下拉列表里选择 “过程映像分区 -> ---” 意味着过程映像里没有存储内容。只能用系统功能SFC14/15来处理它。

S7-400中数据的一致性,所用机理的总结

图 3:在HW Config 里组态DP从站的属性。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc340993.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论