回复:分享一个分布式的功能块,涉及到一种新的编程思想

已锁定

牛逼之人必有牛逼之处

  • 帖子

    30
  • 精华

    0
  • 被关注

    0

论坛等级:游士

注册时间:2020-04-20

普通 普通 如何晋级?

发布于 2023-08-10 23:14:19

44楼

展开查看
以下是引用Zane在2023-08-08 19:07:10的发言 >42楼

循环次数充其量只能改变受控投入控制对象的数量,并不能改变实际控制对象的总数量。


一个硬件配置确定,控制任务明确的系统,其包含控制对象也基本是可以确定在一个限制范围之内的。

以下是引用牛逼之人必有牛逼之处在2023-08-08 13:44:20的发言 >41楼:西门子的背景数据块...

引用41楼详细内容:

西门子的背景数据块不能动态,就算强行动态也需要建立一个模板db,于是产生了一个限制:只能在组态时修改一个功能块所能储存的对象数量。

一个轴是一个对象,一个栈位也是一个对象,一个队员也是一个对象,他们只能在组态时修改。

所以想通过改变循环次数来增加对象很困难。

以下是引用Zane在2023-07-30 11:58:46的发言 >39楼:不调用,意味着轴不...

引用39楼详细内容:

不调用,意味着轴不受控,你要轴召之即来挥之即去,那轴一定是受控的,全扫描

以下是引用北风_在2023-07-21 16:12:04的发言 >13楼:我以前想过一个问...

引用13楼详细内容:

我以前想过一个问题,应该和楼主说的类似

一台设备用了多个伺服轴,这几个轴控制功能都一样的,所以我写了一个块把各个功能封装在了一起,然后想只调用一次这个功能块,通过这个块中修改对应伺服的硬件标识符来控制这个轴,然后还给每个硬件标识符建立了一个数组,进行0-10的编号,这样我就可以只用在我写的功能块中填0-10的编号来控制这些轴。但实践的时候发现写的块还是得重复调用10次,因为硬件标识符没法写成变量

在一个工程内自然是去确定的,换一个工程硬件数量有可能成倍增加,甚至有可能超过你上一个工程预设的最大数量,于是你这个块需要重新增加背景数据块的寄存器数量。

如果逻辑简单的还好,如果逻辑复杂的则会很难。

针对这些,我就建议将每一个对象拆分出来做成一个单独的块,再根据每个工程的不同来调用适合的数量的势力,然后通过一个统一的inout接口来协调他们之间的逻辑关系。

inout接口不是说要链接一个统一的fb来处理他们之间的关系,而是链接一个相同的数组array 0..1 int,而不需要其他fb来协调这些调用实例的逻辑关系。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11107条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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