加载中…
个人资料
来自金沙江的小鱼
来自金沙江的小鱼
  • 博客等级:
  • 博客积分:0
  • 博客访问:75,375
  • 关注人气:175
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

TIAv17环境下再次学习练习STL-62程序控制指令-块操作

(2024-02-08 10:29:22)
标签:

西门子

tia

stl编程

bec指令

分类: 西门子软硬件
继续学习STL编程,这一篇开始程序控制指令,先从块操作开始学习。
BE (块结束)终止当前块中的程序扫描,并导致跳转到调用当前块的那个块中。程序扫描继续执行调用程序中紧跟块调用声明之后的第一条指令。当前本地数据区将被释放,前一个本地数据区将变为当前本地数据区。当块被调用时所打开的数据块被重新打开。此外,还将恢复调用块的 MCR 依存关系而 RLO 被从当前块移送到调用当前块的那个块中。BE 不依赖于任何条件。然而,如果 BE 指令被跳过,则当前程序扫描将不会结束,将从块中跳转目标处开始继续执行。
BE 指令对于 S5 软件有所不同。在 S7 硬件中,该指令使用时与 BEU 的功能相同。
使用具体的练习来体会一下。
在前面练习程序的基础续航新增一个全局数据块用于这个章节的练习
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
修改属性,去掉“优化的快访问”属性
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
在DB2新建变量
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
新建程序段
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
上面程序中,不管BE_EN是否为TRUE,都要执行BE指令,结束当前程序段,INT1的辅助语句始终不会执行
初始状态下,B_EN为FALSE,所以是下面的样子,INT1还是初始值0
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
修改BE_EN为TRUE,INT1数值依然为0
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
如果希望有条件的块结束,继续学习后面的内容。
如果 RLO = 1,则 BEC (有条件的块结束)中断当前块中的程序扫描,导致跳转至调用当前的那个块。程序扫描继续执行块调用之后的第一条指令。当前本地数据区将被释放,前一个本地数据区将变为当前本地数据区。在块被调用时为当前数据块的数据块被重新打开。恢复调用块的 MCR 依存关系。RLO (= 1)被从已终止的块传送到被调用的块。如果 RLO = 0,则不执行 BEC。RLO 被设为 1,程序扫描继续执行 BEC 之后的指令。
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
在前面练习基础上,DB2添加下面的变量
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
在OB1添加下面程序段
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
初始状态下BEC_EN为0,不执行BEC,后面的赋值语句会执行,INT2数值为30
TIAv17环境下再次学习练习STL-62程序控制指令-块操作
要注意,如果在程序段27之前出现过BE,比如在程序段26出现过BE,那么BE之后所有的程序都不会执行。

BEU (无条件的块结束)终止当前块中的程序扫描,并导致跳转到调用当前块的那个块中。程序扫描继续执行块调用之后的第一条指令。当前本地数据区将被释放,前一个本地数据区将变为当前本地数据区。当块被调用时所打开的数据块被重新打开。此外,还将恢复调用块的 MCR 依存关系,而 RLO 被从当前块移送到调用当前块的那个块中。BEU 不依赖于任何条件。然而,如果 BEU 指令被跳过,当前程序扫描将不会结束,将从块中跳转目标处开始继续执行。
在这里BEU和BE功能一样。




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有