设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL基础教学---冒泡排序
返回列表
发新帖
[西门子]
西门子SCL基础教学---冒泡排序
[复制链接]
20841
|
0
|
2024-3-11 18:49:10
|
显示全部楼层
|
阅读模式
排序,在生活中很常用。在我们自动化工程师中,应该也很常用吧。
今天我们简单说一下冒泡排序。原理的话,就是比较前后两个数据的大小,根据设定的排序方法将数据按你设定的大小放进你的结果中。这里就简单说一下,如果需要详细了解,大家自行百度。
为了方便复用,我们可以做一个FC程序块。
代码也很简单,几行,这里我就贴图了。(主要是懒)
in和out没有任何数据类型。在InOut里面有一个array的不定长数组,为什么用这个呢,方便程序复用嘛。比如今天比较5个,明天比较10个,总不能天天来修改这个InOut的array的数值吧。
首先,通过语句获取到你这个输入进来的数组上下限,有了上下限,我们就知道了我们的循环次数了。
为什么循环次数是Low to Up - Low - 1呢,因为比较前后两个数据啊,比较到最后,那最后一个数据要么最大,要么最小,就没必要再次循环,而且,就算是循环了,他也没人去比较了啊,就导致了PLC报错,会出现一个提示:说区域长度错误。
然后就是循环排序,这里是从小到大排序。比较第一个和第二个数据的值,如果第一个大于第二个,则将第一个数据放进tBuf里面。data的当前位置就是data的第二个位置。然后data第二个位置就是tbuf的数据。其实就是按照顺序进行
大家可以自己看一下,理解一下,冒泡排序还是很简单的。
外部调用的话,就可以这样。通过start启动这个排序
结束之后,关掉这个排序,毕竟,还是要省点PLC的循环时间。你也可以将这个start做到这个FC里面去。毕竟,排序,需要用到再用,别没事就让他一直在循环。
你们也可以根据自身情况,比如再加一个in引脚,通过GOTO指令可以做一个从大到小和从小到大的一体块,方便以后使用。这里就不再演示了。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
工控亿点点
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』