西门子S7-200PLC由“冒泡法”排序算法的逆向思考

时间:2023-03-18作者:佚名
在一些C语言资料上看到,“冒泡法”排序一般是从最后一个数据开始,向地址小的方向相邻两个数据比较,并按照从小到大或者从大到小排序的一种算法。在数据比较、移动的过程中,数据的运动,看起来好像水中的气泡向上运动。故而称之为“冒泡法”排序。
“冒泡法”排序,在知道数据的起始地址、数据个数、数据类型后,需要算出最后一个数据的地址,并从最后的一个地址开始运算排序。我在想,为什么不能从数据的起始地址开始排序呢,如果采用这种“下沉法”排序,还能省去计算数据的结束地址,程序应该会更简洁。于是自己就试着写了一下“下沉法”排序的plc程序代码,并测试通过。
排序环境:224CPU,从VB1000开始连续20个整数,从小到大排序。“下沉法”排序算法参考代码如下:

//******************给外循环体、内循环体的循环次数赋初值***********************
LD SM0.0 //开始执行从小到大的排序程序
MOVW 19, LW2 //给外循环次数(数据个数-1)赋初值
MOVW 19, LW6 //给内循环次数(数据个数-1)赋初值

//*******************建立外循环体并定义排序的其实地址*****************************
FOR LW0, 1, LW2 //FOR外循环体循执行LW2次
MOVD &VB1000, AC1 //将V区的起始地址赋给AC1,定义排序的起始地址

//**************建立内循环体并开始进行相邻的两个数据比较、移动****************
FOR LW4, 1, LW6 //FOR内循环体循执行LW6次
MOVD AC1, AC2 //把当前AC1里面的地址存储到AC2里面
D 2, AC2 //AC2当前地址 2,存入AC2
LDW< *AC2, *AC1 //如果AC2指向的地址里面的内容小于AC1指向的地址里面的内容
MOVW *AC1, LW8 //那么将当前两个地址里面的内容互换
MOVW *AC2, LW10 //如果AC2指向的地址里面的内容不小于AC1指向的地址里面的内容
MOVW LW8, *AC2 //那么当前两个地址里面的内容保持不变
MOVW LW10, *AC1 //如果把小于比较指令改成大于比较指令,那么数据就是从大到小排序
LD SM0.0
D 2, AC1 //AC1当前地址 2,存入AC1
NEXT //跳转到FOR内循环,如果内循环执行结束,程序往下执行

//*******************内循环执行结束,进入外循环执行*****************************
DECW LW6 //内循环体执行结束,将内循环体的循环次数减1
NEXT //跳转到FOR外循环,如果外循环执行结束,程序往下执行
上面代码基本采用临时变量作运算的,其实还可以将其封装成一个子程序,实现多次调用。

相关阅读

18V转3V电源电路图分享

电路设计,电源部分是必须要考虑的内容,电源都处理不好怎给其他芯片电路模块供电?所以做电路设计的必须学会电源部分处理,如果实现各种电源之间转换,是否隔离、过流、过压...
2023-09-12
18V转3V电源电路图分享

电流互感器二次侧为何必须接地?一篇讲清原理、规范与实操要点

电流互感器(CT)作为电力系统中实现大电流转小电流的核心传感设备,是测量仪表、继电保护装置的“信号源”,其一次侧直接接入高压主回路,二次侧则连接低压监测与保护设备...
2026-04-14
电流互感器二次侧为何必须接地?一篇讲清原理、规范与实操要点

电气线路超负荷火灾原因及预防措施

一、线路超负荷火灾原因 电气 线路中通过电流时,由于导体自身电阻存在会产生一定热量,其大小为Q=I2RT。导线选定后,负荷越多,电流I功率越大,导线中产生的热量越多。如电流...
2023-03-21

零序保护基本原理

做配电网运维的朋友都清楚,单相接地故障是配电网最常见的故障之一,而零序保护,就是应对这种故障的“第一道防线”。它的整定计算准不准,直接关系到整个电网的安全稳定...
2026-04-23
零序保护基本原理

传感器坏了,信号线可以短接吗?

首先需要明确,已经坏了短不短接都没意义了!( 电工精品教程免费试学 ) 传感器作为被测量输入的第一道关口,将被测量转换为可测量的信号,这个信号可以是模拟量信号、数字量...
2023-06-27

热销商品

连发瓦斯枪通用瓦斯射钉钢钉枪瓦斯气体高强度瓦斯射钉枪165气罐

连发瓦斯枪是一款专为高强度瓦斯射钉设计的工具,其特点在于能够连续发射瓦斯气体,适用于多种需要快速穿透和固定材料的场景。这款瓦斯枪配备了165气罐,容量足够满足...
4.5

黄铜镀镍金属电缆防水接头EWM密封格兰头HSM电线固定填料函M20M16

黄铜镀镍金属电缆防水接头EWM密封格兰头(HSM型)是一款高性能电线固定与密封装置,适用于M16和M20螺纹规格。采用优质黄铜材质并表面镀镍处理,具备优异的防腐蚀性、机械...
1.14

消防配件二氧化碳灭火器2 3 5 7KG弯头喷管24Kg干冰CO2外喷头喷嘴

二氧化碳灭火器配件中的2357KG弯头喷管与24Kg干冰CO₂外喷头喷嘴,是专业消防设备的重要组成部分。该弯头喷管采用高强度耐腐蚀材料制造,连接灵活,适用于高压CO₂灭火...
4.5

雷士照明led筒灯孔灯客厅吊顶天花灯嵌入式过道筒灯射灯桶灯家用

雷士照明LED筒灯是一款专为现代家居设计的嵌入式照明产品,适用于客厅、吊顶、过道、卧室等空间。采用高品质LED光源,光线柔和均匀,显色指数高,有效还原真实色彩,营造舒...
5.78

雷士照明嵌入式防眩筒灯射灯窄边过道灯深杯客厅无主灯天花灯米雪

雷士照明嵌入式防眩筒灯射灯——“米雪”系列,专为现代无主灯设计打造。采用窄边深杯结构,有效控制杂散光,实现精准防眩,营造舒适柔和的光环境。适用于客厅、过道、天...
25.67

网站栏目