技术论坛

应用探讨——在TIA 博途环境下使用SCL语言

作者 主题
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
主题:应用探讨——在TIA 博途环境下使用SCL语言
推荐帖


只看楼主 只看精华 楼主 2015-08-17 11:28:34
标签:

如今SCL语言的使用越来越受到用户的重视,并且西门子现在的PLC控制器均支持SCL语言。在TIA博途环境下,SCL语言的使用也是非常容易上手。那么我们就以下话题展开关于SCL语言的讨论:

1.相对于STEP7V5.x,TIA博途下SCL语言友好编译环境及使用技巧

2.如何在SCL语言下寻址,并实现类似STL语言的间接寻址功能

3.SCL语言的优势及应用场合,借助于TIA博途平台,以后SCL语言的应用前景

 

活动奖励:
此次集中交流将持续至9月11日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友可获得金币奖励,可以在当前的兑换奖品中兑换奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。  

预祝大家交流愉快,收获丰富!  

 

 


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1242103&b_id=66&s_id=0&num=78

游民

经验值: 97
发帖数: 8
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 2楼 2015-08-17 15:45:33

还是沙发吗?



 
以下网友喜欢您的帖子:

  
游民

经验值: 97
发帖数: 8
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 3楼 2015-08-17 15:47:12

昨天刚看了他们讨论STL会不会淘汰。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1221
发帖数: 102
精华帖: 2
回复:应用探讨——在TIA 博途环境下使用SCL语言
推荐帖


只看楼主 只看精华 4楼 2015-08-17 15:57:05

去年做了一个项目,在触摸屏上做了许多文本列表的选择,对应程序算法的切换,软件是博途V11,里面有免费的SCL,也不需要你额外的购买SCL软件包的,感觉这个西门子真的是想推广这个,不然不会免费啊,这是我第一次用博途也是第一次用SCL,目前的感觉就是做条件选择,条件判断后需要执行的比较多或比较复杂的话,比STL用起来简介明了,比如IF ELSE,这个比STL的跳转用起来方便多了,刚好我这个项目又是分支情况很多的,就尝试用了下。用这个配合WINCC 或者flexible里面的VBS或者C脚本,可以处理很多复杂的逻辑关系。另外的话,可读性比STL强多了,懂点C的人写这个入门还是比较简单,复杂的我也没玩过,不过我在网上查资料说SCL的执行效率比较低,用的太多会影响程序的执行效率,所以,有些复杂的地方用下,控制用量,扬长避短还是很好的。我个人觉得每中编程语言都有其独到方便的以免,我们都学习一下,不同的情况用不同的语言,这样的程序写出来才比较方便调试。方便读懂。


努力工作学习,充实自己,为家人创造美好生活!
以下网友喜欢您的帖子:

  
新手

经验值: 42
发帖数: 3
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 5楼 2015-08-17 16:04:27

表示学习, SCL一直不会用,表示惭愧。


 
以下网友喜欢您的帖子:

  
游侠

经验值: 403
发帖数: 48
精华帖: 8
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 6楼 2015-08-17 16:21:09
以下是引用小.苹.果在2015-08-17 15:57:05的发言 >4楼

去年做了一个项目,在触摸屏上做了许多文本列表的选择,对应程序算法的切换,软件是博途V11,里面有免费的SCL,也不需要你额外的购买SCL软件包的,感觉这个西门子真的是想推广这个,不然不会免费啊,这是我第一次用博途也是第一次用SCL,目前的感觉就是做条件选择,条件判断后需要执行的比较多或比较复杂的话,比STL用起来简介明了,比如IF ELSE,这个比STL的跳转用起来方便多了,刚好我这个项目又是分支情况很多的,就尝试用了下。用这个配合WINCC 或者flexible里面的VBS或者C脚本,可以处理很多复杂的逻辑关系。另外的话,可读性比STL强多了,懂点C的人写这个入门还是比较简单,复杂的我也没玩过,不过我在网上查资料说SCL的执行效率比较低,用的太多会影响程序的执行效率,所以,有些复杂的地方用下,控制用量,扬长避短还是很好的。我个人觉得每中编程语言都有其独到方便的以免,我们都学习一下,不同的情况用不同的语言,这样的程序写出来才比较方便调试。方便读懂。

在Step7V5.x时,SCL语言需要单独的软件包和授权,并且STL作为SCL编译的中间语言,因此效率会低一些。博途下安装好即可使用,并且SCL语言使用单独的编译器,所以执行效率也会大大提高。


---------------------来自西门子工程师
以下网友喜欢您的帖子:

  
游民

经验值: 78
发帖数: 3
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 7楼 2015-08-17 17:08:55

学习来了。


既然选择工控这条路就要走到底,甚至走到黑。
以下网友喜欢您的帖子:

  
侠客

经验值: 831
发帖数: 167
精华帖: 7
回复:应用探讨——在TIA 博途环境下使用SCL语言
精华帖精华帖星级3级 推荐帖


只看楼主 只看精华 8楼 2015-08-17 17:22:08

用PORTAL写了一个完整的项目,对SCL整体感觉很好: 

1.在STEP7V5.X时代,SCL语言就是外加的一个编辑器和一个编译器,与系统并未完全深度集成,感觉就是一个游离于体制外的一个可怜的家伙;编辑时要记得指令和变量名,没有提示,搞完之后需要做一堆工作才能下载运行,在线监视也不行。

   而在PORTAL时代,SCL完全变成了系统的一部分。首先的是输入时的智能提示,写程序的速度提升至少一倍,语法或变量输入有误,马上有提示。写完后,直接下载就运行,在线监视也完全支持。那感觉就是:亲生的。

2.按官方的说法:SCL亦是PORTAL的基本语言之一,运行优化等等;

3.用数组和自定义数据类型实现STL的间址寻址,可读性比STL强很多,技术难度降低到零。而且更妙的是对自定义数据结构的访问,在需要修改数据结构时,只要刷新一下接口,然后修改与数据结构相关的部分代码即可,不管结构内部如何变化,只管改动的部分;这点在与外设通讯时表现明显(如变频器、工艺模块)。

  当然,在使用以上功能时,需要程序员有针对PORTAL SCL的思路;

4.利用外部的编辑器,如EXCEL等文件,对工程中大量的有规律的代码,在EXCEL中刷出来,然后粘贴到SCL中,可以节省编程时间,同时也大大降低错误几率。在梯形图和STL中就很困难。

5.要是SIEMENS的大神们能开发出LAD和SCL混合编程的功能,那就完美了。在SCL中写逻辑,实在不行,费劲,而且写完后自己看起来都感觉很丑。

6.SCL必将成为SIEMENS PLC最重要的编程语言。


SIEAUTO
以下网友喜欢您的帖子:

  
游侠

经验值: 576
发帖数: 76
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 9楼 2015-08-17 19:09:39

说到 SCL 语言我头疼就来了   每次发帖提到SCL 回帖的人数相当少   公司用的SIMOYION 都是SCL 语言编写  而且SCL语言教程少之又少 让我们这些 没有C基础 或者是PASCAL 基础的很难下手   跪求官方能多出点关于SCL资料  


背锅
以下网友喜欢您的帖子:

  
游侠

经验值: 483
发帖数: 7
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 10楼 2015-08-17 20:47:31

 以前的用step7 的时候做项目用到了scl编程,感觉有一些if 条件,非常好用,感觉scl做程序完全可以安装编程者的思想进行下去。做这个之前,自己还默默的把c语言复习了好几次,感觉熟练了好多。

 在博图里面感觉scl更简单了,报考一些调用方式,等等感官好了很多。

但是 感觉这方面的资料太少,学习起来不是很快。希望能多出一些这方面的资料还有实例,前段时间看了大神用scl 做的俄罗斯方块,简直太赞了。

目前觉得,stl 和scl 混和编写速度更快。


赵山河
以下网友喜欢您的帖子:

  
侠圣

经验值: 2013
发帖数: 208
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 11楼 2015-08-18 07:57:14

SCL很不错,对于一些复杂的数字计算或者是包含比较多的循环、批量处理的程序时。使用SCL能极大的提高效率。另外,SCL也比较简单,有过C或者VB基础的都很容易上手。相对S7V5.5来说tia的SCL界面更加友好,而且也无需另外安装。美中不足的是同样的命令或者系统块,SCL中的帮助比LAD里的帮助难找多了,不太完美


 
以下网友喜欢您的帖子:

  
新手

经验值: 24
发帖数: 1
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 12楼 2015-08-18 19:32:41

学无止境啊,STL的其实还可以,但是SCL在我的工作中目前还没有接触过,希望可以接触到前沿知识,希望网站多一些教程~~~


业精于勤荒于嬉,行成于思而毁于随。
以下网友喜欢您的帖子:

  
至圣

经验值: 12688
发帖数: 2083
精华帖: 23
回复:应用探讨——在TIA 博途环境下使用SCL语言
精华帖精华帖星级3级


只看楼主 只看精华 13楼 2015-08-19 10:35:19

1.相比较stepV5.X,TIAStep7无需单独安装SCL软件包,另外编译器对SCL语言进行了优化(当然其他语言也如此),执行效率更高效,界面更好看流畅。编辑器有IO参数表,可直接在参数表里定义IO变量,比step7V5.X的代码定义更直观方便。变量引入自动添加"#"前缀符号,拖曳操作便捷迅速。

2.1500统一了所有语言的间接寻址选项,比较喜欢SCL中Array可变下标索引的间接寻址,再结合FOR循环等使得批量数据处理更方便简洁。300400与1500在SCL间接寻址的语法结构和指令还是不同,PEEK/POKE(包括POKE_BLK)等指令用起来还是蛮舒服的。

3.SCL特别适合复杂算法、数学函数的编程,还有数据和配方管理过程优化等。SCL其实就是类PASCAL语言,借助于博途以后会成为西门子PLC最重要的编程语言之一(第一还是LAD吧),因为现在的应用人员都具备一定计算机语言知识。主要掌握LAD和SCL语言,并建立结构化模块化以及面向对象的编程方法和体系应该是我们大家努力的方向。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 13937
发帖数: 2008
精华帖: 43
回复:应用探讨——在TIA 博途环境下使用SCL语言
精华帖精华帖星级5级 推荐帖


只看楼主 只看精华 14楼 2015-08-19 13:01:58

 

感谢西门子终于更新了文本编辑器,这下发帖的欲望更强了 ,如果再能加入一些表情符号就更美妙了!

我想这个论题是前阶段“STL是否会被淘汰”的延续吧,在PORTAL平台下我恐怕西门子在文本编程的语言是要主推SCL了吧(PORTAL平台下的SCL 更加国际化了,况且 SCL有一个其他语言一直没有的优势---方便移植到各大自动化厂家产品中去),但是STL 个人认为不会被淘汰,但可能在文本编程这一块会被边缘化,因为不少厂家的通常的编程语言只有LAD,FBD,ST(结构文本)而西门子多了指令表(STL).

这些天看了SCL 编程方面的东西和STEP7 V5下的还是变化了不少,

1:首先最明显的就是在PORTAL平台下的FB,FC的形参不需要自己手动键入代码来实现声明和初始化了。指令比STEP7 V5下丰富了很多。输入有了智能提示。在STEP7 V5 的平台下SCL编辑器就是一个纯文本编辑器吧。还有其他很多变化,大家可以自己查看PORTAL和STP7 平台下的SCL编程手册来查看有那些区别吧,我就不多说了,当然目前 来说水平也不够。。。。。。。。

2:TIA +S7300/400 于STEP7 V5 下 并没有很大差别 但是如果TIA+S7-1500 区别就大了,首先在S7-1500 PLC 平台下多了几个新的数据类型(VARIANT,DB_ANY)这些新类型与S7-1500间接寻址密切相关,相关指令如下

VARIANT_TO_DB_ANY:变体类型转换为DB

 DB_ANY_TO_VARIANT:DB转换为变体类型

和变体类型以及间接寻址相关的指令主要有

MOVE_BLK_VARIANT

 

PEEK/ POKE

其余和变体类型相关的指令如下(部分仅在STL 下能用)  

                                            

拿 DB块里的数据间接寻址来说,如果是对一个数组 进行间接寻址那么使用方法还是和S7300/400类似的 DBx.MyArrary[idx],如果对DB块号码和DB里的某个内存进行寻址那么S7-1500中和S7-300/400 相差大了。首先原先的WORD_TO_BLOCK_DB,BLOCK_DB_TO_WORD,已经被VARIANT_TO_DB_ANY 和DB_ANY_TO_VARIANT所取代。

    IF tmpMin>=DWORD_TO_REAL(WORD_TO_BLOCK_DB(tmpPointer.DBNO).DD[tmpAddr+tmpIndex*4]) THEN 
                 tmpMin:=DWORD_TO_REAL(WORD_TO_BLOCK_DB(tmpPointer.DBNO).DD[tmpAddr+tmpIndex*4]);
              END_IF;

现在只能 这样用PEEK./POKE间接寻址了(不知道是不是有其他的方法,我觉得PEEK/POKE 用起来没有STEP7V5+S7300/400 平台下来的方便)

 

 

在TIA 中间接寻址S7-300/400 与S7-1500是有所不同的,见下表。

关于间接寻址的要说的东西太多了,大家还是好好看看那12000多页的手册吧!

3:SCL有自己独特的优点,尤其在TIA 平台下越来越标准化了,更新了许多IEC 的相关指令,这样对于 不同控制器厂家的程序移植提供了便利。SCL语言在数据处理方面有着独特的优势,另外在运动控制编程方面也很不错,在S7-SCOUT 平台下的编程就是以类SCL语言为主。SCL在博涂平台下前途无限啊!

下面看西门子SCL语言下上升沿检测指令就

"R_TRIG_DB"(CLK := "TagIn",

Q => "TagOut");

再看GE PACSYSTEM 的ST语言的上升沿指令

这样我在移植的时只需要变量名称建立的一样,我就仅仅把“”去掉其余不做任何修改把西门子的程序移植到GE PLC中,

最后,我想问下S7-1500的断点调试功能哪里去了?

SCL它能让我们PLC程序员在调试PLC时能享受到和在VS中调试程序差不多的断点调试功能(STL的断点调试实在不习惯,对SCL的断点单步调试很是喜欢非常实用)

 

 

 

 


人生就像一场旅行!
以下网友喜欢您的帖子:

  
侠圣

经验值: 2639
发帖数: 781
精华帖: 10
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 15楼 2015-08-19 21:49:20

我只想问问以前在step7下面写的scl模块是否能100%移植到博途下面来呢?


否则过去积累的大量scl程序要改写将是一件非常痛苦的事情


有生之年,狭路相逢,终不能幸免
以下网友喜欢您的帖子:

  
至圣

经验值: 21704
发帖数: 8417
精华帖: 46
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 16楼 2015-08-20 09:09:43

 个人认为SCL语言,可以适用于任何复杂程序,尤其是在文本编辑器更新后,但是由于相对复杂,直观性差,原来很少使用。在博图中使用可以简化一些操作,建议可以导入原来编辑好的SCL模板或是模块,节省工作量。另外相关的帮助文档一定要做好。


不停的学习,不停的进步!
以下网友喜欢您的帖子:

  
游士

经验值: 170
发帖数: 45
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 17楼 2015-08-20 14:27:05

初涉博途,求赐教!


 
以下网友喜欢您的帖子:

  
游民

经验值: 146
发帖数: 33
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 18楼 2015-08-20 14:57:07
只有这么一点儿人参加讨论?我觉得SCL的可读性远高于STL,有一些C基础的就可以读个大概。而STL就差很多,汇编语言那点儿基础根本不够。所以对于运算量大逻辑复杂的处理内容,首选还是SCL吧
 
以下网友喜欢您的帖子:

  
游民

经验值: 146
发帖数: 33
精华帖: 0
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 19楼 2015-08-20 14:57:24
只有这么一点儿人参加讨论?我觉得SCL的可读性远高于STL,有一些C基础的就可以读个大概。而STL就差很多,汇编语言那点儿基础根本不够。所以对于运算量大逻辑复杂的处理内容,首选还是SCL吧
 
以下网友喜欢您的帖子:

  
yw
侠士

经验值: 1858
发帖数: 1300
精华帖: 4
回复:应用探讨——在TIA 博途环境下使用SCL语言


只看楼主 只看精华 20楼 2015-08-20 19:09:16

现在我编程基本上均使用ST语言编程(即西门子的SCL),反而使用其他不习惯了。



不管是逻辑,算法等,都是一个习惯的问题。欧洲很多工程师均喜欢或习惯使用ST来编程,至于学习起来,刚开始确实没有LD等有详细的指令表来方便直接使用。

在国内很多受日系PLC的长期影响下,很多工程师(包括电气、电器维护等)不愿意使用ST。


Q群: 198412729
以下网友喜欢您的帖子:

  
收起
应用探讨——在TIA 博途环境下使用SCL语言
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。