技术论坛

 SCL之冒泡法

返回主题列表
作者 主题
拾起
奇侠

经验值: 5059
发帖数: 335
精华帖: 6
楼主    2019-01-15 08:53:13
主题:SCL之冒泡法 精华帖 

       最早应用指针寻址,是在10年的时候做滑动均值,即始终计算这一区间内数值的平均值,当区间范围改变时也能满足。看S7-300的STL技术文档,跟啃砖头一样,指针间的跳转始终头大。后面有一个项目,想应用在在线称重,通过对物品在通过检重秤的时间内,采集多个数值,然后利用冒泡法排序,再去大去小,取平均值,或取中间值等都可以,为了降低误差,后面项目没实施,只是做了SMART 200的梯形图间接寻址的冒泡法测验。在SCL没有出现之前,我认为其他品牌的PLC在间接寻址方面比西门子的要好用。

       言归正传,在一直想用SCL而从未实施过,所以用SCL写冒泡排序,是SCL的第一次。此处排序除了比较最大值,将该值对应的编号一并排序,比如ABCD四台泵,谁工作时间长,谁优先休息,或最短,优先启动。

1、端口定义


2、冒泡法程序



3、程序调用


总结:老生常谈,SCL在应用于数组功能计算的时候优势明显,好用就是它最好的褒奖。


附:SMART 200梯形图冒泡法,有本人的也有其他网友的,可惜不知道是哪位大神的。如果有版权的影响,请版主告知删除。谢谢

案例程序.zip


仰望星空,脚踏实地
不断攀登
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
1楼    2019-01-15 10:54:13
主题:回复:SCL之冒泡法

感谢分享!赞一个。

邮箱 yongquancun@126.com
HandsomeHu
游侠

经验值: 405
发帖数: 48
精华帖: 0
2楼    2019-01-15 11:12:22
主题:回复:SCL之冒泡法

0到15共16个数不是第一个循环不是只需要15次吗?我看你是0-15共16次循环。

RENHQ
至圣

经验值: 68954
发帖数: 12234
精华帖: 59
3楼    2019-01-15 11:14:37
主题:回复:SCL之冒泡法

感谢分享

SCL在计算和数据处理上确实很方便,比STL明了了很多

STL感觉就和计算机上的汇编语言似的,写好了,可能处理速度更快一些

Q群:https://jq.qq.com/?k=9BDuEgf6
茹道明
游士

经验值: 203
发帖数: 14
精华帖: 0
4楼    2019-01-15 11:15:15
主题:回复:SCL之冒泡法

 好贴好贴,学习了

WWCWWC
至圣

经验值: 71989
发帖数: 8036
精华帖: 145
5楼    2019-01-15 11:22:45
主题:回复:SCL之冒泡法

点赞是必须的,SCL一直在学习中,楼主提供的程序例子有助于我理解SCL编程方式,感谢,

拾起
奇侠

经验值: 5059
发帖数: 335
精华帖: 6
6楼    2019-01-15 14:30:19
主题:回复:SCL之冒泡法

关键是J值,最大值14,虽然I可以到15,但是在J值的判断中则不会执行。

仰望星空,脚踏实地
校长123校长
侠士

经验值: 1188
发帖数: 59
精华帖: 0
7楼    2019-01-15 14:46:38
主题:回复:SCL之冒泡法

当#I=15时,14-#I变负数了?

HandsomeHu
游侠

经验值: 405
发帖数: 48
精华帖: 0
8楼    2019-01-15 15:17:27
主题:回复:SCL之冒泡法

16个数两两比较的次数为15次,所以J值最大为15次,因为是从0开始,所以J值最大为14,是对的。主要I值为16个数,每次取一个最大值,需要15次,从0开始则I值最大值也为14。

holdkcsxyz
至圣

经验值: 13012
发帖数: 1814
精华帖: 22
9楼    2019-01-15 15:47:47
主题:回复:SCL之冒泡法

感谢分享,排序、队列、链表,二叉树,哈希表这是基础的数据结构偶尔拾起来写点东西还是觉得很实用很有收获。

拾起
奇侠

经验值: 5059
发帖数: 335
精华帖: 6
11楼    2019-01-16 08:09:35
主题:回复:SCL之冒泡法


这是仿真后的值,J值最后值为0。

仰望星空,脚踏实地
看雪001
至圣

经验值: 19337
发帖数: 2076
精华帖: 72
15楼    2019-02-11 18:19:03
主题:回复:SCL之冒泡法

前段时间也在做动态检重秤,1ms采集一次秤数据(16bit),一个产品大约采集300个数据,用窗口选择其中相对平稳时间段的200个数据,分别用均值和中值作为分析结果,重复精度还是均值的高。

附上数据单个产品通过检重秤时采集到的数据波形图:

红色曲线是原始数据,相当于#ADDTIME_SE,蓝色曲线是经过排序后的#ADDTIME,左下角是均值和中值计算结果(克数),相差不大;后来尝试取一段中值再平均,以及振幅补偿等,最终在线使用的还是最简单的累加求和/数组个数=均值。

检重秤的精度主要是由机械设计决定(被测产品是液体容器,在通过检重秤时有晃动,上图中红色曲线的振幅较大;后来用同样的容器,装入高粘度液体或者小颗粒固体就平滑很多),将数据可视化,有一个这样的‘示波器”就可以很直观地找到设计缺陷。


大道至简,知易行难
拾起
奇侠

经验值: 5059
发帖数: 335
精华帖: 6
16楼    2019-02-12 08:05:53
主题:回复:SCL之冒泡法

总结一下经验

1、在线检重秤需要屏弃进入检重秤和出去检重秤的时间段。

2、需要增加个修正系数,用于不同物体的重量修正。不知道这个数值是经验所得还是根据斜率自动计算或其他。

3、均值在当下环境,实践证明在允许误差范围内可靠。

4、数据可视,也可做成计算选择功能项,类似配方功能由操作人选择中值或均值计算。

仰望星空,脚踏实地
看雪001
至圣

经验值: 19337
发帖数: 2076
精华帖: 72
17楼    2019-02-12 13:01:56
主题:回复:SCL之冒泡法

中值计算能得到两个结果:众数和极差。动态秤的平滑段采集到的数据一定是正态分布,而不是偏态分布; 在正态分布中,众数和均值基本相等,均值计算复杂度小得多。

下面是对42000个被测产品重量数据的品质分布图分析:

自然现象中,正态分布占多数,均值更有意义。极差在一定程度上反映了数据的离散程度,就是我们常说的3西格玛还是6西格玛(或者6s);它是采集上来的原始数据,没法通过编程来改善,只能靠硬件,比如机械设计、电磁屏蔽消除干扰等。

中值计算用在偏态分布才是合适的,比如国民收入,中下层特别多,但统计局只会公布均值,不会公布中值。

一切数据分析的基础是数据可视化。

大道至简,知易行难
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。