分享

PLC工程师需要了解的几个西门子博途SCL 实用小技巧

 lsgs001 2022-09-29 发布于江苏

原创 1847工业学习平台 西门子工业1847俱乐部

作者:庞开航-西门子工业技术支持中心

1

概述

SCL(结构化控制语言)是一种基于PASCAL的高级编程语言。随着S7-1200 1500的普及,以及PLC编程中大量引入IT编程思想和编程理念,SCL在西门子PLC中使用的比重越来越大。

SCL 在复杂编程、数学运算、间接寻址等方面相对传统的梯形图(LAD)有着绝对的优势,即使是位逻辑控制也有其自身的特点。

下面介绍几个SCL非常有用但又不太为人所知的技巧供大家参考。

2

如何改变块接口参数显示模式?

经常有客户问,在TIA Portal 的SCL编辑器中,如何展示出像经典STEP 7里面SCL源文件那样的文本式块接口参数,如图1所示。这种方式编辑起来更加灵活,也可以像文本一样复制粘贴。

图片

图 1. 文本式块接口参数

其实,您会发现图1中输入参数数据类型Array[*]不是 S7-300 400 能支持的数据类型,也就是说其实上面图1是在TIA Portal中编辑的,那这是如何实现呢?答案非常简单,只要使用TIA Poral V15.1及其以上的版本,然后进行如图2所示的设置就可以实现。

图片

图 2. 设置块接口形式

设置过后,新建的SCL块的接口形式就是文本式的了。那怎么修改已有SCL块的接口形式呢?我们可以通过将块导出源文件然后再导入源文件的方式来进行改变。有了这个设置,就可以根据需要自由选择块接口参数显示形式了。

3

如何进行循环程序的调试?

SCL的一大特色就是非常适合循环程序编写,如果再配合上间接寻址那就更是如虎添翼。

但是随之而来的是调试问题,很少有人能一次性写出完全没有错误的程序,总会有各式各样的问题,而通过监视功能,只能像如图3所示的那样,最多监视1次循环。

图片

图3. 监视循环

那如何解决这个问题呢?

有高级语言开发经验的人知道,此时应该使用断点调试功能来解决。是的,S7-1500从TIA Portal V15,固件版本V2.5开始支持SCL的断点调试。有了这个功能,就可以非常方便地调试循环内的程序执行情况。具体步骤:

1.首先,在需要监视的循环语句那行最左边灰色区域位置左键单击,此时会出现一个小圆点,这就是断点,如图4所示。

图片

图4. 监视程序及断点

2.然后监视程序,并激活监视菜单中“监视循环”。如图3所示。

3.在右边测试侧边栏中的“断点”里面,左键选中指定断点,然后点击“启用 禁用断点”并确认。如图5所示。

图片

图5. 启用断点

4. 这时,在侧边栏中的“断点”里面,每次点击图6红色方框中的运行按钮,就可以看到监视值的变化,如图7所示。

图片

图6. 点击运行

图片

图7. 监视值变化

过程就是这样简单。有了这个方法,再复杂的程序调试起来也是易如反掌,并且这种方法对循环外的程序也是一样好用。

4

顺序控制能否用 SCL 来编写?

对于复杂的顺序控制,西门子推荐使用Graph编程语言。这个专用于顺控控制的语言功能强大,使用直观,还便于和HMI互动。而对于一些简单的顺序控制,可以通过LAD FBD去搭建逻辑,通过断开使能、置位复位相关变量也可以实现。那可不可以使用SCL来实现该功能呢?

答案是可以的。不仅可以,而且现在西门子官方有越来越多库的顺序控制部分都是通过SCL来实现的。并且结构清晰,易于修改,还相对Graph使用更少的程序资源。

那是如何实现的呢?

答案很简单,通过CASE OF指令就可以实现。有些小伙伴就会纳闷了,CASE OF不就是判断某个变量为几的时候,执行某些动作吗?感觉和顺控没有任何联系。

不不不,联系很大,判断某个变量为几,可以当做判断目前到了哪一步,执行某些动作,我们可以当做执行该步骤时执行的动作。除此以外,还可以在步骤中加上判断是否满足跳转条件,然后修改步骤号。这样一个简单的顺控逻辑框架就搭建起来了。

当然了,一个完整的顺控还需要考虑顺控如何开始,如何断电保持,如何报警以及复位,如何控制输出等功能,这些可以通过相关逻辑或设置进行实现。

话不多说,可以看一下基于这个方法编的Modbus TCP轮询功能,如图8和9所示,是不是比自己之前LAD编的更加清晰直观啊?是不是在这之前,根本没觉得顺控和通信轮询有联系?

图片

图8. 接口参数

图片

图片

图9. 程序示例

怎么样?是不是有种豁然开朗的感觉?是不是有种冲动,想赶紧看看自己的项目有没有可以改造成顺控的程序,然后使用SCL重新编写。那就赶紧行动吧。

5

如何把SCL程序分段

现在的生产工艺越来越复杂,甲方提的要求也是越来越多,于是程序代码是越来越长,即使是用SCL来写,也是占满了程序编辑器的。和LAD这种自带网络段的编程语言不同,SCL作为文本语言,本身就是不分段的,正常只能通过空行或者加注释行分隔,但是程序结构依然不是很清晰。

不过不要紧,我们现在郑重向您推荐一个分段神器,它使用简单,效果显著,功能强大,那就是—REGION指令。

从 TIA Portal V14开始,支持通过REGION指令来实现分区分段功能。并且可以实现区域命名,区域折叠,区域定位,区域嵌套等多个功能。V16以后甚至可以做到区域名称多语言的功能。如图10所示,展示了不同区域功能的使用。

图片

图10. 区域功能使用

有了这个功能,就可以轻松地把复杂的程序划分成若干个区域,在编辑器左侧自由地管理分区。轻松地定位到需要的位置,折叠暂时不需要显示的区域。程序架构也是一目了然,程序也更加易读。

6

SCL还有什么小技巧吗?

当然有,并且还有很多

作者自我介绍:工控小周

人们中眼的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。我从信捷(干了五年)出来后,做过步科独立销售,做过北辰 自己单干过 ,可是我发现通用品越来越难做,生意越来越难做,但是生活还得继续下去,我就在想,白天想,夜里想 突然想到2011年认识的巨控的总经理,他有好的产品,无线远程监控模块GRM500,于是我从无锡硕放飞广州, 经培训成了巨控产品经理,在巨控负责销售和技术,并且一直努力专注下去!一直不忘初心,经常奔赴第一现场,进行项目评估,项目实施,数据采集,工业物联通讯,上位机,APP组态等。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多