704工程
级别: 探索解密
精华主题: 0
发帖数量: 35 个
工控威望: 134 点
下载积分: 740 分
在线时间: 25(小时)
注册时间: 2017-06-03
最后登录: 2024-01-15
查看704工程的 主题 / 回贴
楼主  发表于: 2020-04-22 15:33
如题:

在一个项目中,使用的是FX5U的PLC,内部使用了几个FB块。

那么,FB块中,编程时,内部使用了几个上升沿(使用的是,局部标签,输入类型),我需要把这个FB块重复调用几次,这样,会不会出问题?



详细:

食品机械行业,某个项目,有个机构,上面安装了几个光电,每个光电感应到不锈钢盘子时,PLC会相应作出动作。

因为有两个机构(编号AB),动作完全一样,所以,写了一个FB块,调用了两次。

FB块外部管脚,输入信号,是光电的常开信号,FB块内部,用的是这个输入信号的上升沿。


但现在的问题是,其中 B 机构,从来没出过问题,A机构经常感应不到盘子。频率很高。

程序的顺序,是A调用的FB块,在B调用的上面。


也考虑过不锈钢的反光率太高的问题,也用的是漫反射光电。但是同样的光电,B机构干同样的活,从来没出现过这种问题啊。于是,就怀疑,是否是这个被多次调用的FB块,内部用了上升沿的问题。

对了,光电换过几次,不管用。   光电品牌,先是易福门的   06H201,也用过施克的 GTE6。

如果考虑光线反射的问题,难不成,真得换成对射的?
704工程
级别: 探索解密
精华主题: 0
发帖数量: 35 个
工控威望: 134 点
下载积分: 740 分
在线时间: 25(小时)
注册时间: 2017-06-03
最后登录: 2024-01-15
查看704工程的 主题 / 回贴
1楼  发表于: 2020-04-22 15:47
像博图中,FB块在调用时,会相应的建立DB块,这样无论是边沿信号还是定时器计数器,每个FB块都是各自独立的。

三菱的Works3里,不是很明确。

像我同事比喻的,西门子的FB块,所有的变量、边沿信号,都有自己的独立卫生间,即使这个FB块被调用100次,也无所谓,西门子会给你建立100个DB块,给你建100个独立的卫生间。

至于三菱,这方面不是很了解,是用的独立卫生间呢,还是这两个FB块使用1个公共卫生间呢?
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 375 个
工控威望: 523 点
下载积分: 1470 分
在线时间: 325(小时)
注册时间: 2017-06-12
最后登录: 2024-12-20
查看zmrs163的 主题 / 回贴
2楼  发表于: 2020-04-22 16:07
新建FB的时候可以选择类型,一种是宏类型,那么FB分别有独立空间,另一种是子程序,那么空间是共享的。默认为宏类型,因为之前WORKS2里面没得选就是宏类型,缺点就是占用的程序空间会大一点,但是一般而言程序空间都不是问题。所以你选择宏类型的话是不会有问题的。
本帖最近评分记录:
  • 下载积分:+1(天羽轻翼) 收到,感谢
    eledesigner
    懂一点点
    级别: 工控侠客
    精华主题: 0
    发帖数量: 1806 个
    工控威望: 2068 点
    下载积分: 2717 分
    在线时间: 2231(小时)
    注册时间: 2009-08-21
    最后登录: 2024-12-21
    查看eledesigner的 主题 / 回贴
    3楼  发表于: 2020-04-24 08:50
    引用
    引用第2楼zmrs163于2020-04-22 16:07发表的  :
    新建FB的时候可以选择类型,一种是宏类型,那么FB分别有独立空间,另一种是子程序,那么空间是共享的。默认为宏类型,因为之前WORKS2里面没得选就是宏类型,缺点就是占用的程序空间会大一点,但是一般而言程序空间都不是问题。所以你选择宏类型的话是不会有问题的。

    专业,这个帖子有营养。
    这个论坛多的是乱七八糟的玩意了,拉低了档次。
    nbtr小赖
    级别: 家园常客
    精华主题: 0
    发帖数量: 161 个
    工控威望: 577 点
    下载积分: 566 分
    在线时间: 69(小时)
    注册时间: 2019-08-28
    最后登录: 2023-07-18
    查看nbtr小赖的 主题 / 回贴
    4楼  发表于: 2020-04-27 11:23
    works3的话,FB类型改成宏程序就好,里面的变量地址是独立的,上一个不影响下一个,但是假如你程序里用到了变址寄存器Z的话,建议做头存尾还原的操作,具体就是程序第一行将所有会用到的Z单独存在一个局部变量里,然后程序最后一行将值还原回去。
    eledesigner
    懂一点点
    级别: 工控侠客
    精华主题: 0
    发帖数量: 1806 个
    工控威望: 2068 点
    下载积分: 2717 分
    在线时间: 2231(小时)
    注册时间: 2009-08-21
    最后登录: 2024-12-21
    查看eledesigner的 主题 / 回贴
    5楼  发表于: 2020-04-27 12:16
    引用
    引用第4楼nbtr小赖于2020-04-27 11:23发表的  :
    works3的话,FB类型改成宏程序就好,里面的变量地址是独立的,上一个不影响下一个,但是假如你程序里用到了变址寄存器Z的话,建议做头存尾还原的操作,具体就是程序第一行将所有会用到的Z单独存在一个局部变量里,然后程序最后一行将值还原回去。

    学习一下,感谢分享
    周先生
    级别: 略有小成
    精华主题: 0
    发帖数量: 275 个
    工控威望: 339 点
    下载积分: 7865 分
    在线时间: 79(小时)
    注册时间: 2018-03-19
    最后登录: 2024-12-18
    查看周先生的 主题 / 回贴
    6楼  发表于: 2020-04-29 09:13
    学到新知识点了,感谢各位大佬!
    yuanych
    好事坏事,终成往事,一切都是最好的安排。
    级别: 工控侠客
    精华主题: 0
    发帖数量: 28 个
    工控威望: 2023 点
    下载积分: 1055 分
    在线时间: 159(小时)
    注册时间: 2020-01-09
    最后登录: 2024-11-10
    查看yuanych的 主题 / 回贴
    7楼  发表于: 2020-05-06 15:56
    学习了,感谢分享!!!