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

已锁定

牛逼之人必有牛逼之处

  • 帖子

    30
  • 精华

    0
  • 被关注

    0

论坛等级:游士

注册时间:2020-04-20

普通 普通 如何晋级?

发布于 2023-07-18 13:06:42

2楼

展开查看
以下是引用Zane在2023-07-18 08:20:52的发言 >1楼

我却没有见到过有人编写一个块,这个快只能控制一个设备,但是通过多次调用这个块,并使用数组连接起来,于是可以像搭积木一样,形成可以控制任意数量设备的大功能块。

---------------------------------------------------------------------------------------------------------------

这个实现起来并不难,300、400的年代就可以实现。




还有,最简单的入栈出栈功能块,我见到的也是一个块,但是这个块的栈位总是有限的,但完全可以编写一个块,这个块只能提供一个栈位,通过多次调用并使用同一个数组连接,于是可以提供任意多的栈位。

------------------------------------------------------------------------------------------------------------

数组数组,组就是集中在一起,无论是逻辑上的或者是物理上的,楼主分散集中的想法够新颖,是不是能再仔细说说呢?

我却没有见到过有人编写一个块,这个快只能控制一个设备,但是通过多次调用这个块,并使用数组连接起来,于是可以像搭积木一样,形成可以控制任意数量设备的大功能块。

---------------------------------------------------------------------------------------------------------------

这个实现起来并不难,300、400的年代就可以实现。


--------------------------------------------------------------------------------------------------------


只要使用功能块都是可以实现的,但我要说的是,每一个功能块都是同样的,且任意一个实例与其他所有实例都存在连锁关系。

就拿排队块来说。

栈位1到栈位100,调用100个实例,如果栈位1功能块出栈,那么栈位2-100的功能块的栈位输出都会减一。

如果有功能块入栈,且它入栈得到的栈位是50,那么原来的栈位为50的功能块会变成51,原来的51变成52......

一般实现这些功能,以往都喜欢做成一个功能块,然后所有的连锁、输出都在这个功能块中,但是往往存在弊端。

比如需求变为101个,又该如何?重新写逻辑关系?调试?修复bug?

为什么不能写成一个块,这个块只能提供一个栈位输出,当需要两个栈位时,调用两个实例,则提供两个栈位输出,需要100个栈位则调用100个实例......

这些功能块之间只需要一个简单的数组:Array[0..1] of Int 负责连接成为整体,它能够传递这些块之间的连锁关系、信息。

值得一说的是,即使你调用六万个实例,依然可以使用Array[0..1] of Int 将他们连接,它不会因为你调用的实例多了,数组的元素也需要增加,永远是Array[0..1] of Int。


甚至,你还能够将这些栈位分为两组,使用同一个数组连接。


通过这样,我们可以把这个功能块放在一个fb内,组成一个大功能块,也可以打散。



比如,当我们有一百台设备,他们需要进行排队,于是我们可以将一个排队块集成在设备功能块内,只需在inout定义一个Array[0..1] of Int数组,连接起来之后,这些设备之间就能够自动形成队列,即使你突然增加一台设备,也无需重新考虑逻辑,直接增加一个排队块的实例即可。





评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10666条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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