大虾:
SCL 编程语言与计算机**编程语言有着非常相近的特性,在经典的Step7 5.X平台和新推出的TIA Portal 平台下都支持该编程语言。在特定的应用场合,使用SCL编程会非常的方便,而且在新一代控制器S7-1500硬件平台下,使用SCL编程其代码执行效率较其他编程语言高效的多,是鼓励大家使用的一种编程语言。因此,在接下来的一个月里开设此话题,讨论SCL编程特点、在Step7 5.X,TIA Portal V11 及TIA Portal V12环境的使用问题。欢迎有SCL使用经验的朋友积极分享您的应用感触,当然也欢迎打算在今后的工作中使用此编程语言的朋友积极投入到话题讨论,欢迎提出您的疑问,我们互相探讨共同提高。
游士:
用scl写涉及到计算或比较复杂点儿算法的程序非常有优势,但是调试的时候如何监控scl程序呢?
大虾:
先讲一下自己的感受吧,
1、首先我认为SCL非常接近我们的思维,在编制时程序可读性比较强
2、对于指针编程也是SCL的优势,可以很轻松的实现STL能实现的指针编程,这样我们在时间紧迫的
情况下就不需要再去花时间去搞懂STL的指针编程
3、支持FOR、WHILE、REPEAT等循环指令,并且有EXIT指令跳出本次循环,灵活性强。
4、支持AT指令,如同**语言的继承,父体是一字节ProgramCommand,然后
定义 ProgramCommandBit AT ProgramCommand:ARRAY[1..8] OF BOOL,
可实现取这个字节的每一位:ProgramCommandBit [0]、ProgramCommandBit [1]、、、、、
5、可以利用SCl源文件生成UDT、DB块,并赋予初始值、、、、
6、调试时一样可以像STL、LAD那样在线监视,并且各个变量的状态显示很直观,在线监控要
在编译时生成调试信息,保证PLC与程序的时间戳相同,即可在线监控。另外支持断点调试,
可以很直观的监控循环体每一步执行的结果。
6、目前我遇到SCL在生成调试信息时经常提示生成的调试信息超过64KB,再进行减少代码还是提示此信息
不知各位有没有遇到我这样的情况、、、、、
奇侠:
SCL也就是结构化控制语言,比较接近于C语言,相较于梯形图,SCL使用面并不广,这是和其难于上手有关的。下面比较一下SCL与梯形图:
1、使用难度方面。使用SCL前要掌握命令与语法,这就要花不少时间;而梯形图呢,就算是一个没用过的人也能从工具栏把指令拖过来,编出一个没有错误的程序。更不用说梯形图还有各种功能强大的模块,举个*简单的例子,SCL中如果使用上升沿必须要先进行定义,梯形图里可以直接使用。
2、功能方面。SCL的功能比梯形图要强大,也更灵活,尤其在算法和寻址方面,梯形图更是望尘莫及。用SCL写出来的程序都比较精简,更能优化程序,提高程序的效率。
3、交流与调试方面。我们写出来的程序不但自己要看懂,更要让别人能看懂。在这方面明显梯形图更直观,更形像,在调试时,梯形图也能更方便的监控各变量。
*后说一句,编程语言都不过是一个工具,没有谁比谁更好,对我们而言只有哪一个更合适,也许把SCL与梯形图结合在一起使用效果更好。
以上属个人愚见,轻拍。
大虾:
2楼你的scl需要编译才能下载编译后会生成你的scl中定义的ob,fc,fb然后下载程序,双击blocks里面的scl编写的程序的话会打开scl的源文件。这样你直接点击在线,和stl编程一样左侧显示你的程序右侧显示数据。
奇侠:
优点:
控制任务的表达式高度压缩;
缺点:
高度抽象导致效率低(和stl比)
特点:
编程效率高,代码执行效率低。------偶喜欢
侠客:
lad,stl,scl,graph各有各的优势,*后生成能下载到plc还是stl。
lad处理复杂逻辑是强项
stl是我们常用的,可以完成各种功能,需要很熟悉各种指令
scl在处理数组数据方面很好,可以使用角标。
graph在处理顺控方面是强项。
我们需要根据自己的需要来选择我们的编程语言。一个编程语言生成的功能块可以被另外一种语言调用。所以根据我们程序功能来选择我们的编程语言可以达到事半功倍的效果。
我要纠正一下:
SCL语言是类PASCAL语言,并不是C,前些年比较风靡的DELPHI就是采用的PASCAL语言。
另外补充一下对SCL的感受:
1、CASE指令可实现STL的JL指令的功能,使用起来更直观化,另外支持GOTO跳转,对于程序实现步进控制同样很方便。
2、SCL不仅可以在线调试,而且支持变量"参考数据"功能,并且变量符号与**地址无一疏漏。
3、对于SCL上升沿下降沿检测的实现我并不同意4楼所说,同样只需要像STL、LAD定义一个沿检测位,
即可轻松实现沿检测功能,下面举一上升沿例子:
上升沿检测原理: IF In AND NOT Mem THEN //沿检测逻辑
执行语句部分;
END_IF;
Mem:=In;
注:Mem就是我们需要的中间存储位、 In被检测的变量
4、另外在西门子介绍SCl时着重强调了几项功能:
以上几种功能我深有体会
5、SCL同样支持多重背景调用功能。
6、对于STL能实现的复杂运算功能目前我还没发现SCL不能支持的,在没使用SCL之前的我程序基本都是用STL,使用了SCL之后同样很方便。
另外提一下对SCL能所改进的地方:
1、能在创建功能块的过程中生成块符号名
2、编译生成调试信息支持更大的容量
游民:
学习一下,顺便请教个问题;我用SCL写了一段程序,但是源代码丢了;如何能够将我的源代码上载上来呢?还有一个问题就是我在STEP7 V5.4中使用的SCL源码到TIA Portal V11中去同样只需该源码为什么就不能正常执行呢?
侠客:
回8楼
? scl支持 goto 跳转?印象中是不可以的。
一会试一下
我在使用SCL 语言时感觉处理数据计算很方便,比如在做一些滤波程序过程。
我认为SCL 语言只要认真的去把规则记住,数据格式会应用,其编程主要应用PASICAL 思路或一些基本的编程思路,就能编好,主要是去做。
过外工程师很喜欢应用此编程语言,也可以防止COPY,因编译后的程序很难读懂。把SOURCE 文件删除,基本上是很难看懂。也是对自己成果的一种保护
游士:
正在学习和使用SCL语言,本来是不知道有这个语言的,实现项目的时候遇到了复杂的循环程序,之前用的是LAD编写的程序,它使用的就是N个扫描周期,很是占用时间,实时性不强,如果用SCL语言的话,它处理循环比较好,程序简单,一个周期内基本就可以处理完,完全简化了循环程序结构,同时提高了系统实时跟随性。
总坛主很细心的看到了SCL语言的话题,这个我在帖子中也提到了,感觉SCL语言的结构性更加强,对于程序优化,特别是循环等控制语句,处理非常方便。
LAD语言比较直观,做一些逻辑运算很明了也很好用,但是对于大程序来说,语句显得非常庞大。
试用了下TIA的SCL, 初步有如下体会:
1 Step7 5.X 要用SCL得安装有SCL软件 ,TIA的话直接软件装好就支持;
2 TIA与Step7 5.X相比 界面人性化了,操作方便了,特别是接口声明部分,直接对应类型里面填入就好了;
新手:
不知道什么原因,我还是没适应使用SCL。
侠圣:
个人认为SCL的*大优势是可移植性高。
编程语言的可移植性在未来的趋势是越来越重要。可移植性也可以理解为两方面:一、SCL转换为其他语言;二、其他语言转换为SCL。编程很大内容是算法,其他语言的算法和功能实现可以由SCL来移植实现,那是很伟大的一件事。
特别说一下:没有**的编程语言,只有*合适的编程语言。每个语言都有其优点和缺点。记住,适合你的就是*好的。
乙:
从来没用过SCL,我们的产品只有很简单的计算,绝大部分都是逻辑控制。
斑竹:
呵呵,争论SCL语言有多好,想一把菜刀砍遍天下,我觉得毫无意义。
说实话,SCL语言我用的不是很多,如8楼所说也就是在函数算法,数据处理配方等方面才用,而且相当部分能用STL的就直接用STL做了。
不过,我也从不只用一种语言写程序,STL和LAD经常在一个块内就是交换着用的,而SCL或GRAPH等经常是针对某个特定的程序块的。
当然S7-1200由于不支持STL,可能今后使用SCL的概率会更高一些,但付出的代价是程序的执行效率会低一些。
15楼说得很好,“没有**的编程语言,只有*合适的编程语言”
那我要说,生活是那么的多姿多彩,工控人程序员翻着花样去尝试不同的编程方式也未尝不可,哪怕是失败的,那也是一种经验,我们可以用来交流的。