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

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