关于TIA 环境下 SCL 编程的CASE指令的疑问探讨

已锁定

威师爷

  • 帖子

    5108
  • 精华

    47
  • 被关注

    255

论坛等级:至圣

注册时间:2013-09-18

白金 白金 如何晋级?

关于TIA 环境下 SCL 编程的CASE指令的疑问探讨

2949

4

2019-04-12 11:42:14

大家好!

如下是CASE指令帮助文本的部分内容,我对其内容没有什么疑问,但是想使用其例子来改进,来表达我对该指令的疑问,

示例

以下示例说明了该指令的工作原理:





SCL




CASE "Tag_Value" OF

0 :

"Tag_1" := 1;

1,3,5 :

"Tag_2" := 1;

6...10 :

"Tag_3" := 1;

16,17,20...25 :

"Tag_4" := 1;

ELSE

"Tag_5" := 1;

END_CASE;



SCL


改进的例子问题表达如下:

这个程序是 根据 "Tag_Value"步调编号来对相应的 变量进行赋值

例如 "Tag_Value"=0 时 "Tag_1" := 1; 

         "Tag_Value"=1 时 "Tag_1" := 2; 

CASE "Tag_Value" OF

0 :

"Tag_1" := 1;

"Tag_Value":=1

1 :

"Tag_1" := 2;

"Tag_Value":=2

2 :

"Tag_1" := 3;

"Tag_Value":=3

3:

"Tag_1" := 4;

"Tag_Value":=0

ELSE

"Tag_1" := 0;


END_CASE;

   

大家可能看出来了,这是一个顺序控制程序,根据 "Tag_Value"=X对 "Tag_1"进行不同的赋值

与STL 的JL 应用是一个思路,那么问题来了,例如 "Tag_Value"=0 时 执行0: 这一步   "Tag_1" := 1;  

那么这一步执行完成以后程序还会去扫描 1:   2: 3:下面这几步的程序吗?当然条件不满足是不会去执行的,但是程序会不会去做判断?还是说执行第0:这一步以后也不进行下一步的判断,程序就直接跳回块开始的地方继续执行?


如果每一步都去进行判断,那么是不是会非常浪费资源?STL使用了JU +BEU等等条件来使状态进行跳转,这样只执行相应的步调编号的程序,而没有过多的去执行那些无畏的判断。


我知道SCL肯定可以做到,但是我不知道如何去灵活应用,在论坛看到几个帖子说是使用了CASE指令导致CPU的扫描周期延长,我想是不是这方面的应用不恰当引起的呢?如果能够搭配STL一样的JU + BEU等等指令是不是就可以减少无畏的判断呢?因为顺序控制,基本上一个扫描周期也只可能执行一个步号,所以没有必要去判断哪些无畏的条件,条件满足只执行满足条件的步号,其余的一概不执行,等下一个扫描周期再做判断,如果步号改变,再执行对应的步号的程序。周而复始。。。


希望大家讨论一下,多多指教!!


关于TIA 环境下 SCL 编程的CASE指令的疑问探讨 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10584条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。