西门子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外循环,如果外循环执行结束,程序往下执行
上面代码基本采用临时变量作运算的,其实还可以将其封装成一个子程序,实现多次调用。

相关阅读

检测交流电机好坏的常用方法

有关交流电机的小知识,为了保证交流电机的正常使用,需要检疫电机质量的好坏,以下是检测交流单相电机与三相电机好坏的常用方法,感兴趣的朋友可以参考下。 一、检测交流单相...
2023-06-26
检测交流电机好坏的常用方法

电工基础:互感器穿5圈,电流如何计算?

在电力系统中,电流互感器( CT或TA)的使用非常普遍,如系统监测、继电保护、电能计量等都需要用到电流互感器。电流互感器的作用是将一次系统的大电流转换为二次系统的小电流...
2023-06-27
电工基础:互感器穿5圈,电流如何计算?

配电网关键技术及应用——不停电作业技术

目前,我国配电作业是以停电作业为主、不停电作业为辅。供电企业开展不停电作业,可以避免配电设备因检修等工作导致的停电,大幅提高供电可靠性,在增加供电量的同时为企业增...
2023-07-05
配电网关键技术及应用——不停电作业技术

贴片电容容值偏低?其原因及解决对策都在这里

入料检验、设计部门选型测试电容容值时经常遇到容值偏低的问题,对工作造成极大困扰。本文将从仪器差异、测试条件、测试环境、材料老化等方面对此作出说明及解释,以帮助大家对...
2023-03-31
贴片电容容值偏低?其原因及解决对策都在这里

一定时间内连续按下按钮无效的继电控制设计

在有些工业控制中,要求按钮或开关在一定时间内不能够连续接收信号,比如在物料计数过程中,如果某个检测元器件产生晃动或者被其他物体误触发,可能会产生计数错误,这样就要...
2023-04-01
一定时间内连续按下按钮无效的继电控制设计

热销商品

EPDM配电箱机柜密封条三元乙丙橡胶半圆海绵自粘发泡胶条20*10mm

EPDM配电箱机柜密封条采用优质三元乙丙橡胶(EPDM)材质,具备优异的耐候性、耐臭氧、耐高低温(-40℃~+120℃)及抗老化性能,适用于户外及严苛环境。其半圆海绵结构设计,兼具...
1.08

加长球头内六角扳手L型六方棱套装万能2 2.5 3 4 5 6 8 10-30号mm

加长球头内六角扳手L型六方棱套装(22.5–30mm)专为高扭矩与深孔作业设计,适用于机械维修、工业装配及精密设备维护。套装涵盖22.5、3、4、5、6、8、10至30mm等多种规...
1.15

京生国标包塑金属软管 穿线波纹管电线套管蛇皮护线管16 20 25 40

京生国标包塑金属软管(穿线波纹管/电线套管/蛇皮护线管)规格涵盖16、20、25、40mm,采用优质镀锌钢带为基材,外层包覆阻燃PVC,兼具柔韧性与抗压性。产品符合国家标准,具...
1.05

内六角扳手套装梅花螺丝刀6角六棱内六方六边形加长万能板手工具

内六角扳手套装是一款多功能精密工具,适用于拧紧或拆卸内六角螺丝,广泛应用于家具组装、自行车维修、机械设备及电子产品等领域。套装包含多种规格(如1.5mm至10mm)的6...
8.9

L型内六角扳手内六角螺丝刀单个内六方形匙套装0.9-2-3-4-5-6-8mm

L型内六角扳手套装,包含0.9、2、3、4、5、6、8mm共七种常用规格,适用于各类内六角螺丝的拧紧与拆卸。采用高强度合金钢制造,表面经防锈处理,坚固耐用,抗磨损性强。L型...
2.23

网站栏目