AI小西
热门搜索
1847工业学习平台过程调节器选型选型选型选型定位器资料汇总

签到有奖

  • 移动端入口

  • 工业服务小程序
  • 支持中心移动端首页
  • 智能小西- 智能问答与在线预约
  • SIEMENS工业找答案小程序
  • 工业培训与认证
  • 西门子工业1847俱乐部
  • SIEMENS工业技术支持与服务
@CurrentUser.EmailCount@

消息提醒

登录 | 注册
@CurrentUser.NickName@
1847会员:未开通
VIP等级 @CurrentUser.vipLevel@
西币
@CurrentUser.coin@
  • 我的支持中心
  • 我的1847会员
  • 我的技术论坛
  • 我的找答案
  • 我的下载中心
  • 我的售后服务
  • 我的培训认证
  • 我发的帖子
  • 我跟的帖子
  • 我的论坛设置
  • 论坛用户指南
  • 我的下载中心
  • 我的培训认证
  • 我的提问
  • 我的回答
  • 已经帮助了@CurrentUser.allAnswercount@人我要回答
  • 已连续活跃@CurrentUser.allLoginDayCount@天我要提问
  • 首次回答问题获得双倍西币积分
  • 个人设置
  • 退出
  • 首页
  • 技术支持
    • 技术支持
    • AI小西
    • 风驰卡
    • 产品入门
    • 在线产品选型
  • 售后服务
    • 售后登记和质保查询
    • 备件商城
    • ASP工程师验证
    • ASP公司证书验证
    • 售后服务常见问题
  • 下载中心
    • 首页
    • 售前文档(样本、宣传册等)
    • 售后文档(FAQ、手册等)
  • 工业学习平台
    • 首页
    • 了解会员权益
    • 立即开通1847会员
  • 培训认证
    • 首页
    • 教室培训课
    • 取证训练营
    • 在线自学课
    • 认证证书查询
    • 培训伙伴验证
  • 技术论坛
    • 首页
    • 最新发帖
    • 精华帖
    • 发新帖
  • 找答案
    • 首页
    • 已解决问题
    • 精华常见问题
    • 发布新问题

运维工程师专区

官方商城

  • 西门子中国
  • 技术支持与服务首页
    我的支持中心
    下载中心首页
    全球技术资源
    1847工业学习平台
    产品入门新手必读
    找答案
    技术论坛
    售后服务
    网络资源新手必读
    高级搜索
  • 技术论坛
    论坛公告
    论坛使用指南
    最新发帖
    精华帖
    分享帖
    高赞帖
    热门帖
    高端推荐帖
    最高收藏帖
  • 自动化系统 / SIMATIC S7-1200系列
  • SCL语言编程的常用方法和适用情况示例

技术论坛

 • 产品分类
自动化系统
  • SIMATIC S7-1500系列 
  • SIMATIC S7-1200系列 
  • SIMATIC S7-200
  • SIMATIC S7-200 SMART 
  • SIMATIC S7-300/400 
  • 通信与网络组件
  • Profinet技术开发专区
  • 工业边缘计算
  • SIMATIC WinCC / Panel 
  • SIMATIC WinCC OA (原PVSS)
  • DCS/SIMATIC PCS7
  • IPC/PG
  • LOGO!
  • 物联网(IOT)
  • 工业电源
驱动技术
  • SINAMICS 
  • SINAMICS S200 
  • 直流调速器
  • 电机
  • SIMOTION
  • MicroMaster
  • 驱动技术综合产品
  • MasterDrives 
  • DCMA 变频器健康管家 维护智库
数控系统
  • SINUMERIK 
  • SIMODRIVE
低压电气
  • 低压电气
  • 低压数字化
传感器与通讯
  • 过程仪表
  • 分析仪器
  • 工厂传感器
谈天说地
  • 谈天说地
 • 咱工程师的故事
咱工程师的故事
  • 网友专栏 
  • 工程师随笔
1847大咖专栏
  • 崔工谈博途与PLC
  • PROFINET工业通信详解
  • 冯工聊工业网络
  • 电磁兼容问题及处理
  • 大咖专栏合集
特别专题
  • 专家大讲堂课后探讨
  • 西门子工业1847俱乐部
  • 特别专题合集
 • 培训与认证答疑专区
培训与认证答疑专区
  • PLC编程精英训练营
  • MA 小型自动化系统
  • WinCC系统开发工程师精英训练营
  • V90精英训练营
  • WinCC精英训练营
  • S7-1200精英训练营
  • G120变频器精英训练营
  • S7-200SMART精英训练营
 • 服务合作伙伴专区
服务合作伙伴专区
  • FA合作伙伴共创社区
  • Networks and Communication
  • GMC蓝黄带考试-G120
  • GMC蓝黄带考试-V90
  • GMC 合作伙伴专区

SCL语言编程的常用方法和适用情况示例

xyvsjay

西门子1847工业学习平台

  • 帖子

    211
  • 精华

    0
  • 被关注

    4

论坛等级:侠士

注册时间:2017-11-05

钻石 钻石 如何晋级?

SCL语言编程的常用方法和适用情况示例

12401

25

2025-05-27 16:08:20



SCL语言作为文本化语言,更接近计算机编程,和传统的电路图演化而来的梯形图思路上有较大区别,在大多时候用起来更简洁,移植方便,但是相比图形化语言的梯形图,SCL在可读性尤其是调试方面远不如梯形图。SCL语言是西门子的独家叫法,其他PLC一般称作ST语言,基本用法一致,可能各家会有自己的专用指令的区别。SCL和最常见的C语言相比,有非常大的相似性,可以理解为C语言的子集。在C语言基础上阉割了函数,以及其他一些高级功能,只保留一些判断,比较,循环等基础语法,和大多的脚本语言基本一致,对于上手学习非常简单。

绝大多数学习plc编程都是从梯形图开始的,下面我将列出一些典型的梯形图程序,再将这些梯形图转化SCL,看看其中的注意事项。每种语言都有其最适用的范围,我将结合自己的使用经验分享一些SCL的常用方法和适用情况。

1、简单的赋值语句


以上2个程序段的效果是一样的,这种简单赋值,scl用起来更方便,在赋值语句多时可以在excel批量处理,批量修改。

2、带条件或分支的线圈或MOVE。

当梯形图的线圈加上条件或分支时,move语句前面加条件或分支时,SCL是怎样的呢?


在SCL中我写了常规写法,以及2句赋值语句改if的写法。很显然,对于线圈类型的梯形图,直接用赋值语句是最简单的,如果用IF语句,需要加写线圈不满足条件输出为0时的程序。

if语句更类似梯形图的置位复位,线圈逻辑的程序都是可以用置复位写的,但是显然这样做会麻烦很多。梯形图中的置位复位以及带条件move语句用if来写是更好的选择。

需要注意的是if以及归类为程序控制指令的指令,如case for while等等,当条件不满足时,后续的内容是跳过不执行的,梯形图中对应的是很少使用的jmp这类指令。举例来说,在一段复杂计算前加if条件,如果不满足条件那么就不会执行这些计算,可以减少扫描时间。if的执行结果里如果放定时器,可能导致if条件不满足时,定时器不被执行,无法复位的问题。也因此使用定时器不建议放在if的执行结果内,放的话还需要额外加不满足条件时复位程序。
3、沿信号的写法


沿信号是梯形图和scl语言1个很大的区别,所有品牌plc梯形图都有沿信号的检测指令,大多数存储沿的变量还是plc内部自带自分配的。文本语言没有这个概念,有2种做法,1是根据沿信号原理,自己建变量自己写,灵活也方便移植,另1种是带背景数据的专有指令,可以理解为官方打包自己写的沿指令为FB块给你用。换plc就没法移植了。

上图的程序分别列出了专用指令的沿信号和自己写的沿信号。使用沿信号专用指令时,和定时器类似,将指令拖到编辑区,会让你选择单个实例,多重实例或参数实例,你也可以在变量表中预先添加r_trig类型变量,这个类型只支持在FB背景中添加,不支持全局DB。或者选择单个实例,在系统资源自动添加。

4、定时器用法


只推荐上述的这种写法,不要将定时器放在程序控制指令内部,如if for等,前面说过,放在这些指令内部除了要写条件满足时触发还需要写不满足时复位,更繁琐。另外就是定时器的Q或ET直接连接变量,使用这个变量来触发其他的逻辑,不建议使用定时的.Q来触发。这是因为西门子定时器是扫描到Q或ET时才更新计时,使用.Q可能和连接的Q ET变量重复,导致单个周期多次更新,定时器发生异常。

预先在变量表定义好数据类型,然后将变量拖到编辑区,或直接拖指令后选择背景数据的方式,这个写法适用于大多数的专用指令,如计数器,FB,FC的调用等。

即使是这些梯形图改成常规写法的scl,你也可以发现scl的可读性比较一般,尤其是这些线圈条件很多,MOVE前的条件很多时,监控调试难以一一看到通断点,这是文本语言和图形化语言的根本区别。西门子在监控时看这些变量值需要在额外的列表中查看,有些PLC是可以在变量上显示监控值的,可读性可调试方面仍然远不如梯形图。我的经验是处理这些位逻辑时,尽量用梯形图来写。

下面分享一些更适合SCL语言编写的程序,这些是实际使用的程序,并没有梯形图与之对比,梯形图要实现这些效果会麻烦很多。

5、程序控制指令的一些应用



上面是modbustcp指令的轮询程序,主要用的case语句,case的每个状态在同一时间只有1个会执行,同个位变量在不同条件下会多次进行写1或写0,如果梯形图处理这样的程序,可能会产生双线圈,需要更多的中间变量或其他方式进行处理。


程序控制指令可以认为是scl的特色,如果使用这些指令能更方便时,那么用scl就比使用梯形图更好用,典型的就是循环指令,for循环等批量处理数据时,梯形图几乎是难以做到的。这些指令的条件不满足时,结果部分是不经过扫描周期执行的,有跳过的效果,梯形图的指令树条件满足能流为1,不满足为0,始终扫描执行这些程序。这是根本性区别。

6、比较语句


前面列举了一些适用赋值不太适用if的情景,实际赋值语句都是能够写成if语句的。在一些非位变量进行比较时,以及其中还掺杂着计算时,scl语言是更有优势的。梯形图的计算只能一步一步进行,每步的计算结果还需要存1个中间变量,scl就可以写数学公式一样写长串的比较和计算,这简单太多。虽然一些梯形图也有了计算指令,实际模仿的就是scl,仍然不如scl好用。

7、数据的计算处理


上述是通信读取电能表数据,再将同类的数据,按照仪表数据排列格式进行批量处理,其中涉及计算,类型转换,循环等。基本上关乎数据的处理时,scl都是更好的选择。

8、一些特殊指令的应用


peek poke指令,以及上图的GetSymbolName指令都是SCL语言下才有的指令,这些指令可以更方便的实现某些特定功能,熟练使用事半功倍。

9、特定功能的封装


上面是流量累积功能的FB封装程序,SCL写出来非常简短,后续的多品牌移植,文本的复制粘贴都非常方便,或者写程序说明文档也异常简单。

以上的实例和用法方面的介绍并没有非常的系统化,也未包含所有方面,只是自己平时写的一点点程序中的摘抄。我平时写程序也是以梯形图为主,使用LAD和SCL混编的方式是目前最合适的方式。这是PLC编程的实际控制内容所决定的,毕竟程序绝大部分还是在控制数字量IO上。

多年来,编程用scl语言更好还是lad更好,哪个是未来趋势的争论无休无止。我认为找到适合自己的方式就是最好的方式,只会lad一种编程99%甚至更多时候都足够了,只使用scl语言也可以应付所有的工况。并且PLC编程最好的语言就是梯形图。当然多掌握一种编程语言绝对是大有益处的,很多时候是换1种思考方式,打开了自己的思路和眼界。


剩余80%未阅读, 请登录阅读

回帖加入探讨技术论坛守则

上传附件要求

1. 文件大小:上传文件的大小请限制在2M以内。

2. 文件格式:请不要上传.exe文件,系统支持的格式有:
.avi,.wmv,.mp3,.rar,.zip,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.wma,.asf,.txt,.7z

 
发分享帖
爱工控,乐分享,
分享您的经验与案例
发故事
发表您的精彩故事,
参与征文活动
技术探讨帖
阐述您的观点,
表达我的看法
西家杂谈
海侃天南地北,
闲聊工控世界
发求助帖
求道解惑,“刨根问底”
解决问题
发投票帖
邀投票,做调查,
网友帮您来作主
取消原因:
SCL语言编程的常用方法和适用情况示例
编辑推荐: 关闭

请填写推广理由:

活动公告 查看全部公告>

「技术论坛」、「找答案」关于 AI 辅助创作内容的使用规范

1,833,730 条
海量精彩技术内容

100,000+ 网友与你交流

助你技有所长,论有所获

热门视频,猜你喜欢

本版热门话题

SIMATIC S7-1200系列

共有15147条技术帖

更多

评选标准

相关推荐

换一换

热门标签

换一换

相关帖子推荐

换一换
正在加载...
guzhang

恭喜,你发布的帖子

被评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片

下载中心

  • 首页
  • 查找文档
  • 常见问题大全
  • 精选主题
  • 全球技术资源

  • 首页
  • 知识库
  • 订阅文档

1847工业学习平台

  • 首页
  • 了解会员权益
  • 立即开通1847会员
  • 课程中心
  • 学习路线
  • 初级工程师认证
  • 高级工程师认证

培训与认证

  • 首页
  • 教室培训课
  • 取证训练营
  • 在线自学课
  • 认证证书查询
  • 培训伙伴验证

技术论坛

  • 首页
  • 发帖
  • 最新发帖
  • 精华帖
  • 高赞贴
  • 当前热门帖
  • 高端推荐帖
  • 用户荣誉榜

找答案

  • 首页
  • 提问
  • 精华问答
  • 高赞问答
  • 新解决问题
  • 待解决问题
  • 总积分排行榜

售后服务

  • 我要报修
  • 服务进度查询
  • 质保及权益查询
  • 备件商城
  • ASP工程师验证
  • ASP公司证书验证
  • 支持中心网站重要声明

西门子中国   © 西门子(中国)有限公司 1996 – 2025   企业信息    隐私政策   使用条款   京ICP备06054295号   京公网安备 11010502040638号
 
支持中心新发布“关注”功能了!实时查看彼此动态,更方便地进行技术交流。
不管是“关注”与“被关注”,相信都是一个美好的开始!
还有多重奖励派送,快快行动起来吧!

20秒帮我们优化支持中心!

欢迎您访问支持中心!

丰富的视频,全方位的文档,大量的网友交流精华……

为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!

感谢您的支持!

您收到0封站内信:
×
×
立即
签到
已签到
已签到0天
累计可抽西币次数:0次抽奖机会
累计可抽大奖次数:0次抽奖机会
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。