技术论坛

smart 间接寻址,冒泡法做了一个排序

作者 主题
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
主题:smart 间接寻址,冒泡法做了一个排序
精华帖精华帖星级2级 推荐帖


只看楼主 只看精华 楼主 2019-04-18 17:52:40

        前几天看到网友用smart 间接寻址 冒泡法程序,今天下午不忙,做了一个冒泡法排序,抛砖引玉。 相互学习优化优化程序。

因手头上没有plc暂时未测试。

  









认真做事,低调做人
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1554686&b_id=64&s_id=0&num=26

奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 楼主 1楼 2019-04-18 17:53:14

附上程序

冒泡法排序2.0.zip


这个程序可以用,smart plc 一个扫描周期最长5S(复位看门狗方式),排序600个数需要4S多。

把程序改成多个扫描周期排序应该更合理些。



认真做事,低调做人
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 楼主 2楼 2019-04-18 18:56:06

程序有几个笔误不能正常用  

  附件已经修改完成


认真做事,低调做人
以下网友喜欢您的帖子:

  
新手

经验值: 19
发帖数: 1
精华帖: 0
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 3楼 2019-04-19 18:15:46

修改一下行吗


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 楼主 4楼 2019-04-19 18:45:07
以下是引用喻哥在2019-04-19 18:15:46的发言 >3楼

修改一下行吗

什么意思 ,修改什么??


认真做事,低调做人
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 5楼 2019-04-19 21:58:23
楼主你这样做法是用来滤波…你真疯了。
我宁愿每50ms排序10个或者每100ms排序16个,也不愿每5秒排序600个数。5秒间隔给人的感觉就是你的程序响应很迟钝!并且严重影响主程序周期!绝不可取。
如果不是为了滤波,建议别这样折腾PLC…
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 楼主 6楼 2019-04-20 07:39:43
以下是引用Zaxife在2019-04-19 21:58:23的发言 >5楼:楼主你这样做法是用来滤波…你真疯了。 我宁愿每50ms排序10个或者每100ms排序16个,也不愿每5秒排序600个数。5秒间隔给人的感觉就是你的程序响应很迟钝!并且严重影响主程序周期!绝不可取。 如果不是为了滤波,建议别这样折腾PLC…

这只是纯粹测试plc性能而已,排100个数大越95ms


认真做事,低调做人
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 7楼 2019-04-20 08:34:05

我在200上试过一个冒泡排序,

16位倒序数列然后顺排序,55个数要510毫秒。顺序排列后顺排序要320毫秒。

32位倒序数列然后顺排序,55个数要500毫秒。顺序排列后顺排序要300毫秒。

感觉smart没快多少?这个我感到有点意外。是我程序执行问题?

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1001479&b_id=3&s_id=1&num=27#anch



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 8楼 2019-04-20 08:57:10

你们测试排序的时间是否是指plc一个周期的时间?加入循环指令后,plc的工作周期会加长这个是事实。只要不影响到plc的正常采集及输出,个人认为没有问题的。

之前,在400plc上做过一个模拟量输入“干扰”的数据采集编程,大致含义是400系统中有其中一路模拟量“干扰”,我用OB35循环定时中断采集20个数据(通过几次测试,感觉20个数据比较合理,主要的考虑到模拟量的实时性问题),取消一个最大值,求平均值。



 
以下网友喜欢您的帖子:

  
侠客

经验值: 734
发帖数: 117
精华帖: 0
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 9楼 2019-04-20 10:28:53

冒泡程序,冒泡是什么意思呢,没明白,看写的程序,在逻辑方面比较简单


study hard
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 10楼 2019-04-20 10:34:48

我的是指一个周期完成排序。也相信楼主的也是。(我没看程序,他说要修改。)

我知道模拟量采集都要时间的,显然一个周期做模拟量的采集排序是没有意义的。意义在于一些逻辑控制,比如,一些动作20个数据齐集了,然后决定下一步做什么。这个时候就必须最快速度得到结论,即使要等几秒都要等。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 楼主 11楼 2019-04-20 12:48:37
以下是引用芳季在2019-04-20 10:34:48的发言 >10楼

我的是指一个周期完成排序。也相信楼主的也是。(我没看程序,他说要修改。)

我知道模拟量采集都要时间的,显然一个周期做模拟量的采集排序是没有意义的。意义在于一些逻辑控制,比如,一些动作20个数据齐集了,然后决定下一步做什么。这个时候就必须最快速度得到结论,即使要等几秒都要等。

对的,一个周期完成。

程序可以了,截图没换。


认真做事,低调做人
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 楼主 12楼 2019-04-20 13:08:59
以下是引用WWCWWC在2019-04-20 08:57:10的发言 >8楼

你们测试排序的时间是否是指plc一个周期的时间?加入循环指令后,plc的工作周期会加长这个是事实。只要不影响到plc的正常采集及输出,个人认为没有问题的。

之前,在400plc上做过一个模拟量输入“干扰”的数据采集编程,大致含义是400系统中有其中一路模拟量“干扰”,我用OB35循环定时中断采集20个数据(通过几次测试,感觉20个数据比较合理,主要的考虑到模拟量的实时性问题),取消一个最大值,求平均值。


我是这么测试的:1.smart plc 看门狗默认时间500ms,找了几份资料,没找到修改看门狗时间的地方,就在内外循环里面加了看门狗复位指令。

2.同时smart plc 看门狗时间最大5000ms,排600个数大约4320ms就到极致了,除非改成多周期异步指令。


认真做事,低调做人
以下网友喜欢您的帖子:

  
至圣

经验值: 76199
发帖数: 19143
精华帖: 378
回复:smart 间接寻址,冒泡法做了一个排序
推荐帖


只看楼主 只看精华 13楼 2019-04-20 13:25:21
以下是引用芳季在2019-04-20 10:34:48的发言 >10楼

我的是指一个周期完成排序。也相信楼主的也是。(我没看程序,他说要修改。)

我知道模拟量采集都要时间的,显然一个周期做模拟量的采集排序是没有意义的。意义在于一些逻辑控制,比如,一些动作20个数据齐集了,然后决定下一步做什么。这个时候就必须最快速度得到结论,即使要等几秒都要等。

等几秒,跟指令的同步及异步执行没有直接关系,无非就是一个结果,什么时候取这个结果。


芳侠的思路有问题


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
奇侠

经验值: 7589
发帖数: 1989
精华帖: 0
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 14楼 2019-04-20 15:27:33
想不到plc的运算能力这么低下。
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 楼主 15楼 2019-04-20 16:14:08
以下是引用quiet在2019-04-20 15:27:33的发言 >14楼:想不到plc的运算能力这么低下。

plc 运算就是这样,smart 已经是标称很快的了


认真做事,低调做人
以下网友喜欢您的帖子:

  
至圣

经验值: 10685
发帖数: 1561
精华帖: 33
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 16楼 2019-04-20 17:13:48

楼主你试试在你的程序中L寄存器改成V,计算速度会大幅提升的。建库后的多次调用通用性因此会受点影响,但是可以克服的。


工控爱好者
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 楼主 17楼 2019-04-20 19:13:23
以下是引用芳季在2019-04-20 08:34:05的发言 >7楼

我在200上试过一个冒泡排序,

16位倒序数列然后顺排序,55个数要510毫秒。顺序排列后顺排序要320毫秒。

32位倒序数列然后顺排序,55个数要500毫秒。顺序排列后顺排序要300毫秒。

感觉smart没快多少?这个我感到有点意外。是我程序执行问题?

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1001479&b_id=3&s_id=1&num=27#anch



@芳 侠

测试了一下,昨天数据记错了

100数16位倒序数列然后顺排序95ms    顺序排列后顺排序要60ms

55个数31  /   19ms


认真做事,低调做人
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 18楼 2019-04-21 10:37:23

大家猜如果用大扫描做外循环,或者用跳转换for,整个执行时间会多了还是少了?



 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:smart 间接寻址,冒泡法做了一个排序


只看楼主 只看精华 楼主 19楼 2019-04-21 18:13:36
以下是引用芳季在2019-04-21 10:37:23的发言 >18楼

大家猜如果用大扫描做外循环,或者用跳转换for,整个执行时间会多了还是少了?


我做一个可以测试一下的,一会出结果。


认真做事,低调做人
以下网友喜欢您的帖子:

  
收起
smart 间接寻址,冒泡法做了一个排序
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。