设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL编程实例——栈的实现算法
返回列表
发新帖
[西门子]
西门子SCL编程实例——栈的实现算法
[复制链接]
37387
|
0
|
2024-11-26 09:09:34
|
显示全部楼层
|
阅读模式
栈也是一种数据结构,它的特点是数据后入先出(Last In First Out,LIFO)或者说是先入后出,意思是一样的。栈有三个基本动作:初始化、入栈和出栈。接下来给大家介绍下我使用SCL语言编写的栈函数FB5018_Stack_Real,它以不定长数组作为存储区,以实数作为数据类型,实现了栈的初始化、入栈和出栈的操作。
在博途环境下新建函数块FB5018_Stack_Real,声明变量如下:
其中:
init:当该参数的值为真时,将栈初始化,内部上升沿信号处理;
push:当该参数的值为真时,将数据data入栈,内部上升沿信号处理;
pop:当该参数的值为真时,将数据出栈到dataQ,内部上升沿信号处理;
data:要入栈的数据;
done:操作完成(该信号会保持,当操作出错后会复位);
error:操作出错;
dataQ:从栈中出来的数据;
counter:栈中数据的数量;
errCode:错误代码(1=存储区满,3=存储区空);
buffer:不定长数组,要操作的数据源;
statStackPointer:栈指针(静态变量);
说明:由于初始化、入栈和出栈的动作均采用上升沿信号处理,为了便于观察,每次操作完成后done信号会保持,若操作出错后会复位。
由于代码比较长,我将其分区处理,如下面的图片所示:
//初始化
//栈信号判断
//数据处理
//输出
在使用前,先进行初始化,然后再进行数据入栈/出栈的操作。
这个函数块我已经测试过了,如果你有任何问题,欢迎留言。下面是我在OB1中的测试代码,使用之前介绍的随机数生成函数:
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
工控老炮儿
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』