您现在所在的是:

西门子SIEMENS

回帖:8个,阅读:1746 [上一页] [1] [下一页]
8867
qdppo
文章数:1195
年度积分:905
历史总积分:8867
注册时间:2016/2/13
发站内信
发表于:2019/12/4 21:15:24
#0楼


  见图 :

 
附件 01.jpg

 
附件 02.jpg


  论述一 :
         在上面两段程序基础上,说说为什么scl语句的扫描时间会比梯形图慢了。对梯形图程序而言,第一个
         扫描周期完成,电机1,2,3均接通。                                        
         而对scl程序而言(编程方式如上),需要3个周期才能让电机全部接通。 这是因为scl语言的执行过
         程是:

         第1周期:当stat_iStatus=0时,扫描执行电机1运行语句。然后执行下一语句,将10赋给stat_iStatus。
         接下来程序跳过下面的case语句执行end_case;语句。第1周期结束。仅电机1接通。  
                             
         第2周期:判断stat_iStatus=10,扫描执行电机2运行语句。然后执行下一语句,将20赋给stat_iStatus。
         接下来程序跳过下面的case语句执行end_case;语句。第2周期结束。电机1,2接通  
           
         第3周期:判断stat_iStatus=10,扫描执行电机3运行语句。然后执行下一语句,将30赋给stat_iStatus。
         接下来程序执行end_case;语句。第3周期结束。电机1,2,3均接通


 论述二 :
         scl程序扫描时间小于或者等于梯形图程序!因为梯形图扫描是每条指令都扫描。而scl if语句是先扫描判
         断条件,看条件结果是否为真。若不是,则跳过内部语句执行下一条扫描。如:若condtion1不满足,则不
         扫描#q_bmotor1 :=true语句,直接执行下面的end_if语句。也就是说,scl语言,每个周期的扫描时间是
         不固定的!条件不满足时,扫描时间最短。条件均满足时,最长。和梯形图相当。



       


8867
qdppo
文章数:1195
年度积分:905
历史总积分:8867
注册时间:2016/2/13
发站内信
发表于:2019/12/4 21:21:37
#1楼



。。。。。不知道哪个论述更正确 。


        但我偏向于论述二 , 感觉SCL还是有优势的。我理解是 :SCL节省 CPU的“体力” ----  需要干活的地方就干,
        不需要就不干 。
4918
MIC小赖
文章数:1582
年度积分:56
历史总积分:4918
注册时间:2015/9/16
发站内信
发表于:2019/12/4 21:33:17
#2楼
不通过技巧的话应该是ST或者SCL扫描周期更长,不过大部分在性能过剩的情况下完全无关紧要。
20905
bnnyygy
文章数:5989
年度积分:1571
历史总积分:20905
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2019/12/4 22:05:36
#3楼
都说ST慢。

比梯形图的好处是数据计算啥的方便很多。
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2019/12/5 8:55:07
#4楼
ST慢并非你描述的原因,因为你描述的原因在ST编程中可以写在一个块而不是分为3个块来写。

慢的原因在于ST在编译为二进制代码时,会产生附加代码,这些代码的运行增加的系统的负担。

附件 workpicture1.jpg

同样功能的梯形图,转换为二进制代码时的附加指令要少于ST语言产生的附加指令。

这才是ST效率没有其他语言效率高的原因,当然,编程效率方面完全看个人了,例如指令表语言较熟悉的话,效率肯定比ST语言更高了,毕竟ST语言还要定义变量………………

Good Luck~
42315
YXBK 版主
文章数:19441
年度积分:2729
历史总积分:42315
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2019/12/5 9:03:19
#5楼
如果用3条IF语句的话,好像就可以一个扫描周期完成了。
大家一起学习
2762
sxjice545
文章数:540
年度积分:57
历史总积分:2762
注册时间:2013/2/23
发站内信
发表于:2019/12/5 10:59:45
#6楼
论述二里的,扫描周期不固定,但是应该不会小于程序的扫描周期吧?也就是肯定会大于或者等于梯形图的扫描周期,
ST(西门子SCL应该也属于ST吧)只是简化编程,方便运算,算执行快慢的话,还是直接的梯形图快吧。
纯属个人理解。

关于case语句,你这里例子使用if更好,会都判断,原本case语句使用的情况一般是只出现一种请款,所以这里用if更合适。
350
小笨熊3IMH
文章数:6
年度积分:56
历史总积分:350
注册时间:2018/7/8
发站内信
发表于:2020/12/8 11:31:23
#7楼
您的论述右问题的,都是三个扫描周期来执行的。您的图例条件只能满足一次,LAD中的#q_bMotor1/2/3也是按照条件来执行的,不存在您说的一次就接通啊
350
小笨熊3IMH
文章数:6
年度积分:56
历史总积分:350
注册时间:2018/7/8
发站内信
发表于:2020/12/8 11:33:57
#8楼
CPU运行最快的是STL语言,不是SCL与LAD.

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005