回复:Smart 200 天花板级冒泡排序子程序封装

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15829
  • 精华

    104
  • 被关注

    990

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2023-01-09 15:48:11

28楼

展开查看
以下是引用tingal_cai在2023-01-09 13:36:02的发言 >27楼

 看得出,楼主在有意减小封装块大小,无奈基础指令太多,减起来实在是太困难了


从楼主这个例子可以看出,要想一块走天下,对于200smart来说,是需要付出代价的。 在200smart上做数据类型选择,是楼主这个冒泡程序的特色。之前我有个封装块也做了数据类型选择功能,发现太占用资源了,最后还是分开做。不过,在同一个程序中,如果有多组不同数据类型的数组需要排序,可以用楼主的封装块(同一个封装块的首次调用占用空间较大,从第二次调用开始,每个块占用空间大幅减小)。

在官方出来LGF块之前,我也做了一套冒泡排序块,不过都是分开做的,但是我做出来过后,基本很少使用。

感谢楼主分享。

要减是可以减的。

就拿网络5来说。

功能是当选择了字节;字;双字的时候间接寻址的递增量自动适应1;2;4

你可以选择:

1的时候是Lx.0=1

2的时候Lx.1=1

3的时候Lx.1=Lx.0=1

4的时候Lx.2=1

然后后面就选择性地执行四次dinc AC0。再后面就DI_I;I_b只出现一次。

然后后面所有出现关于数据类型选择的比较指令都用
LD LX.x代替。

程序量少了。扫描时间也少了。

几万个比较指令都被LD触点代替了,会极度明显地减少扫描时间。

老实说,我那地毯级的程序81毫秒就是这么来的。一点一滴省出来。

现在我这个排序程序用在一个中值滤波。不完全排序,去n个头去n个尾,中间平均。还是滤波程序。滤波是基础啊。除此之外我没有用过排序了。在模拟量滤波这样斤斤计较的程序内,有什么可能让我分周期执行一个排序?巴不得每个周期都排一次序,不用平均数而是用递推平均。碍于排序时间,才用平均值算法。

库中库,滤波,线性变换,这些都是紧密相连的。有人可以跟我谈谈什么高耦合低耦合就好了。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9449条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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