您现在所在的是:

PLC论坛

回帖:2个,阅读:3649 [上一页] [1] [下一页]
356
330624662
文章数:1
年度积分:50
历史总积分:356
注册时间:2018/4/23
发站内信
发表于:2018/4/23 20:29:07
#0楼
  文章标题:TIA博途编程技巧和陷阱

  文章作者:RobinLiu

  文章链接:https://mp.weixin.qq.com/s/8qxBHP4iSEztOuLA00ZIGQ

  侵权请联系论坛管理员删除



  PLC数据传输过程中,数据一致性问题(2)

  Data consistency in PLC data transmission (2)

  大家知道对于西门子PLC的部分s7通讯,如WINCC和PLC的s7通讯,PLC作为数据服务端,无通讯功能块的调用,整个通讯由PLC系统来控制。当WINCC对PLC数据的读写使用非基本数据类型,如原始数据类型。当原始数据类型的大小超过PLC规定的PDU大小时,PLC系统将不能保证通讯数据的一致性。

  下面通过一个小的测试实例来说明:

  测试环境:

  1、Wincc 7.4 sp1 ASIA

  2、s7-1200 plc

  3、Windows server 2008 r2

  使用博途新建项目,添加数据块DB1,DB1中添加一个包含5000字节的数组。

  
附件 image.jpg

  WINCC添加s7-1200通讯驱动,对于DB1这个数组的读写访问使用原始数据类型。在驱动中建立原始数据类型变量tag1,地址属性:选中原始数据类型,长度设置5000(此值已经超过了s7-1200的PDU=240尺寸)

   
附件 image.jpg

  在PLC的OB1中添加如下测试程序用来验证数据的不一致性:

   
附件 image.jpg

  在WINCC画面中添加一按钮,在按下按钮事件中添加c脚本,以写入数据到原始数据变量tag1。

  脚本的功能:修改DB1.DBB0和DB1.DBB4999的值为100,根据PLC的逻辑来置位%M1000.1

   
附件 image.jpg

  按下按钮触发脚本后,在线监视PLC,发现%M1000.0也被置位了,这就是因为系统控制的通讯数据不一致导致。

   
附件 image.jpg

  对于 S7 PLC,在操作系统的循环控制点,系统在保持数据一致性的情况下是将通信数据大小有限的块逐个复制到用户存储器中。而对于大型数据区,使用CPU有限时间片工作的通讯任务在CPU的一个循环周期内不能同时更新这一数据区,也就无法确保数据的一致性。

  如果WINCC要和PLC进行大批量的数据量交换,又要保证数据的一致性,可以使用BSEND/BRCV通讯功能块实现。

   
附件 image.jpg

  由用户程序控制数据的一致性,如使用BSEND功能块的“DONE"信号、BRCV功能块的“NDR”信号。

   
附件 image.jpg

  下表是各PLC BSEND/BRCV功能块支持的最大数据容量(可惜s7-1200 plc并不支持)
[此贴子已经被jint于2018/4/24 8:57:51编辑过]
此帖发自手机工控论坛
2236
非烟
文章数:558
年度积分:50
历史总积分:2236
注册时间:2018/3/28
发站内信
发表于:2018/4/23 22:26:34
#1楼
楼主是小编还是作者啊?
此帖发自论坛手机版
See you。
17288
329345277
文章数:5565
年度积分:764
历史总积分:17288
注册时间:2008/12/16
发站内信
2018春节活动(三)
2015春节活动
2014相约国庆
发表于:2018/4/24 9:34:41
#2楼
楼主,wincc7.4用着怎么样啊?

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003