SIEMENS FB输入输出变量和接口对数据影响

已锁定

吴月伟

  • 帖子

    1
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2015-03-26

普通 普通 如何晋级?

SIEMENS FB输入输出变量和接口对数据影响

1353

2

2020-04-03 14:30:49

一、在写自动流程的时候,经常会对PLC自动程序(通常是FB块)进行操作。

工控方面气缸是最普通的应用。所以经常会使用Set(气缸工作),Reset(气缸返回)对气缸进行操作。当然这两个一般不直接用输出点。


在一个程序中可能有几十乃至上百个气缸,所以会对各个气缸进行分类(主要是功能及位置)。在这个FB 功能里面只有两个气缸。分别为顶升气缸及升降(下压)气缸。

XA和XB为输入,分别对应1#气缸工作位和返回位;

YA和YB为输入输出,对应自动时候刷气缸的变量;

实际上自动功能,就是刷这两个气缸及附属工作的。假如叫名称DB_Cylinder.1.AutoGoWork和DB_Cylinder.1.AutoGoHome


在实际情况下,可能有不同的地方会用到这个气缸的输入输出接口,例如标定位置。

所以在这个FB块没有对输入输出进行操作(DB_Cylinder.1.AutoGoWork、DB_Cylinder.1.AutoGoHome)。而另外一个地方,例如标定位置也有一个FB块想刷这两个变量,也是输入输出接口。会导致标定的FB块无法将这两个输入输出变量Set或者Reset。我的印象中300的PLC是不可以,1500的LAD块有时候可以,有时候不行。可能跟FB块扫描顺序有关系。但是这种情况也不应该算双线圈输出;

以前因为这个也问过别人。有的同事说Graph可以。

所以这具体跟什么情况有关系?有的时候为了避免这个麻烦,做自动程序的时候,将标定FB前面EN给屏蔽,不让标定的FB块运行。


二、在数据传输的时候,会使用UDT。例如有一个泵,后屁股有二维码,进行扫码、拍照工作。会将信息从一个夹爪传递到另外一个夹爪,最终有可能两个夹爪上的产品信息合并。

所以这个UDT可能包含的信息有型号(INT)、二维码(string)、读码结果(INT)、拍照结果(INT)等等。

这个信息,考虑到通用性,很大概率也是放在FB的输入输出接口上的(我是喜欢这样操作,这样不同的FB块可以拷来拷去)。

例如初始化话时候,该位置夹爪打开、或者夹爪上没有产品。会将这个UDT全部FILL清零。夹爪上有产品,同时判断PLC记忆中的数据是不是匹配。假如这个位置记忆中没有产品,但是存在了一个产品,需要提示将产品取掉。或者记忆中是型号A的产品,产品换型了,现在做的是B的产品,需要型号匹配,要不然误动作,会将机器人或者其他的东西碰坏。


字符串(String)作为UDT中的一个参数,并且作为IO输入输出接口,在没有东西的情况下,会对整个UDT区进行FILL清零操作。

如果下次又有产品了,通过move或者smove,都发现了博图系统的一个Bug,

西门子的字符串前面有两个byte,分别对应字符串长度和有效长度。move或者字符串move后,有效长度仍然为0。后面的字符串也是存在的。但是因为少了报文前面的有效长度,导致该字符串不能够被识别。需要额外给这个有效长度赋值。

也曾尝试过,将string单独拎出来当成输入输出接口变量是没有问题的。

曾经测试过,不对这个UDT进行FILL可以使用。不知道什么鬼。但是在两个夹爪之间信号交换肯定会用到Block_MOVE进行传递,同时将原有数据区FILL的情况。


处理方法,也是没有办法的办法。建立char数组。将char数组转换成字符串;

所以有没有遇到上面两个问题的朋友有什么好方法的。


SIEMENS FB输入输出变量和接口对数据影响 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有8650条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。