技术论坛

 • 产品分类
 • 咱工程师的故事
 • 培训与认证答疑专区
 • 服务合作伙伴专区

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

返回主题列表
作者 主题

总坛主
西门子官方工程师西门子官方工程师

经验值:23745
发帖数:3792
精华帖:8
楼主    2015-08-17 11:28:34
主题:应用探讨——在TIA 博途环境下使用SCL语言

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

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

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

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

 

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

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

 

 

游荡
侠客

经验值:831
发帖数:167
精华帖:7
8楼    2015-08-17 17:22:08
精华帖  主题:回复:应用探讨——在TIA 博途环境下使用SCL语言

用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
刚刚入门
至圣

经验值:12739
发帖数:2093
精华帖:23
13楼    2015-08-19 10:35:19
精华帖  主题:回复:应用探讨——在TIA 博途环境下使用SCL语言

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语言,并建立结构化模块化以及面向对象的编程方法和体系应该是我们大家努力的方向。


Letham
至圣

经验值:14066
发帖数:2027
精华帖:43
14楼    2015-08-19 13:01:58
精华帖  主题:回复:应用探讨——在TIA 博途环境下使用SCL语言

 

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

我想这个论题是前阶段“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的断点单步调试很是喜欢非常实用)

 

 

 

 

人生就像一场旅行!
剑忠
奇侠

经验值:9228
发帖数:639
精华帖:57
22楼    2015-08-20 22:30:57
精华帖  主题:回复:应用探讨——在TIA 博途环境下使用SCL语言

 TIA Potal平台的SCL编程环境确实有很多的改进和提高,大致如下。

1、统一的变量声明接口区(Layout of the block interface),从而减少变量定义的语法错误;

2、语法表达式内的代码可折叠/展开,以方便阅读;

3、代码键入时有智能感知提示了,这与专业的例如Microsoft的Visual Studio开发工具类似了;

4、代码语法错误的颜色提示和警告;

5、代码断点设置(set/delete bookmark)与调试;

6、代码行文本选择(selected text)与代码行加注释(comment);

7、代码行增加/减少缩进量(indent/outdent),利于美观排版的可读性。

8、进度指针式调节代码文本字体的缩放(zoom),快速而方便;

9、代码行引用变量的符号表注释显示;

10、另外还支持对STEP7 V5.x平台SCL代码的导入移植等。

大学之道,在明明德,在亲民,在止于至善。
氢气
游侠

经验值:403
发帖数:48
精华帖:8
30楼    2015-08-24 13:26:05
精华帖  主题:回复:应用探讨——在TIA 博途环境下使用SCL语言

确实SCL语言的编程资料相对较少,但是其接近自然语言的特点也使用户使用起来比较容易上手。

S7-SCL编程

http://www.ad.siemens.com.cn/download/docMessage.aspx?Id=2757

STEP 7 Professional V12 SP1使用SCL对S7-300/400间接寻址的变量表达式

https://support.industry.siemens.com/cs/cn/zh/view/85079034

其编程特点与技巧还是得在于多练习才能体会。

---------------------来自西门子工程师
氢气
游侠

经验值:403
发帖数:48
精华帖:8
41楼    2015-09-07 14:37:41
精华帖  主题:回复:应用探讨——在TIA 博途环境下使用SCL语言

无法将Bool数据类型隐式转换成其它数据类型。如果程序块设置了IEC检查,源数据类型的位长度不能超过目标数据类型的长度,并且LREAL,DWORD等不能进行隐式装换。

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