AI小西
热门搜索
1847工业学习平台V90 EPOS控制功能及常见问题选型PLC编程3SB3退市声明以太网通信

签到有奖

  • 移动端入口

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

消息提醒

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

运维工程师专区

官方商城

  • 西门子中国
  • 技术支持与服务首页
    我的支持中心
    下载中心首页
    全球技术资源
    1847工业学习平台
    产品入门新手必读
    找答案
    技术论坛
    售后服务
    网络资源新手必读
    高级搜索
  • 技术论坛
    论坛公告
    论坛使用指南
    最新发帖
    精华帖
    分享帖
    高赞帖
    热门帖
    高端推荐帖
    最高收藏帖
  • 谈天说地 / 谈天说地
  • 【SCL编程案例】PCS7-CFC利用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编程案例】PCS7-CFC利用SCL编程实现跳闸首出

YHKingKong

西门子1847工业学习平台

  • 帖子

    824
  • 精华

    0
  • 被关注

    51

论坛等级:侠圣

注册时间:2008-08-28

钻石 钻石 如何晋级?

【SCL编程案例】PCS7-CFC利用SCL编程实现跳闸首出

2282

2

2025-06-08 23:26:37

       分享一个水泥余热发电PCS7(DCS)项目,利用SCL编程实现CFC(Continuous Function Chart,连续功能图)自定义跳闸首出(确定第一个引起汽轮机跳闸的首要条件)的程序。该功能块有20个DI输入信号(跳闸条件)、1个输出信号(YTripCH,跳闸首出DI通道号)、1个复位信号(Reset,Bool类型),可确定20个输入信号当中哪个是引起汽轮机跳闸的首要条件。首要条件确定后,必须通过复位信号且故障信号消失,才能将输出信号清零。

       控制系统选择西门子S7-417H冗余DCS系统,通过PCS7 V7.0 SP2进行编程,详细开发过程请见附录(1.硬件组态;2.网络组态;3.定义DI点;4.SCL编程;5.将SCL源文件编译为CFC可调用的功能块;6.CFC编程;7.总结)。

附录:

附录-SCL编程案例征集活动示例程序.pdf

1.  硬件组态

       该系统CPU选择417-4H冗余系统,主备CPU切换时间100ms至300ms之间,可实现余热发电系统控制系统无扰切换,确保控制不中断,过程状态不丢失。CPU主站有四个分布式EM200子站,分别是APL汽机子站、AQC子站、SP1&SP2子站、SP3&SP4&SP5子站。主站与子站通过Profibus-DP通讯协议连接,由于通讯距离较长,使用OLM模块进行光电转换以实现长距离通讯,如图1所示。

图1 硬件组态


2.  网络组态

       该系统有1个ES(工程师站)、5个OS(操作员站)。PCS7系统可以通过ES站将上位机程序便捷的下载到指定的OS站,避免了通过U盘或设置共享硬盘拷贝程序的繁杂操作,如图2所示。

图2 网络组态

3.  定义DI点

       利用导入/导出功能,快速将IO清单导入到DB块中,并设置变量在PCS系统是可见的(S7_m_c:='true' ),如图3所示。

图3 定义DI变量

4.  SCL编程

       通过PCS7 SCL编辑器根据应用场景及业务逻辑进行编程,如图4所示。

图4 SCL编程

主要源程序如下;

FUNCTION_BLOCK "TripFirst"

 

TITLE = 'TripFirst'

AUTHOR : YangHong

FAMILY : SBS_BLK

NAME   : FirstOut

KNOW_HOW_PROTECT

VERSION: '2.00'


VAR_INPUT 

   IN1{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN2{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN3{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN4{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN5{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN6{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN7{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN8{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN9{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN10{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN11{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN12{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN13{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN14{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN15{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN16{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN17{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN18{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN19{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   IN20{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

  

   Reset:BOOL:=FALSE;  //Reset Sign:Pulse

END_VAR

 

VAR_OUTPUT

   OUT1{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT2{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT3{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT4{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT5{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT6{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT7{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT8{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT9{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT10{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT11{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT12{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT13{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT14{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT15{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT16{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT17{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT18{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT19{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   OUT20{S7_dynamic:='true';S7_m_c:='true'}:BOOL:=FALSE;

   YAlarm:BOOL:=FALSE;  //First:Alarm

   YTripCH:INT:=0;      //First:Channel Number

   YStep:INT:=0;  

END_VAR   

 

LABEL

  YAlarmFirst;//Jump Lable

END_LABEL

 

VAR_TEMP

//Here Define Temp Variable

END_VAR

  

BEGIN        

YStep:=8;         

          IF IN1 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=1;OUT1:=TRUE;RETURN;END_IF;

          IF IN2 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=2;OUT2:=TRUE;RETURN;END_IF;

          IF IN3 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=3;OUT3:=TRUE;RETURN;END_IF;

          IF IN4 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=4;OUT4:=TRUE;RETURN;END_IF;

          IF IN5 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=5;OUT5:=TRUE;RETURN;END_IF;

          IF IN6 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=6;OUT6:=TRUE;RETURN;END_IF;

          IF IN7 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=7;OUT7:=TRUE;RETURN;END_IF;

          IF IN8 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=8;OUT8:=TRUE;RETURN;END_IF;

          IF IN9 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=9;OUT9:=TRUE;RETURN;END_IF;

          IF IN10 = 1 AND Reset = 1  THEN YAlarm:=TRUE;YTripCH:=10;OUT10:=TRUE;RETURN;END_IF;

          IF IN11 = 1 AND Reset = 1  THEN  YAlarm:=TRUE;YTripCH:=11;OUT11:=TRUE;RETURN;END_IF;

          IF IN12 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=12;OUT12:=TRUE;RETURN;END_IF;

          IF IN13 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=13;OUT13:=TRUE;RETURN;END_IF;

          IF IN14 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=14;OUT14:=TRUE;RETURN;END_IF;

          IF IN15 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=15;OUT15:=TRUE;RETURN;END_IF;

          IF IN16 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=16;OUT16:=TRUE;RETURN;END_IF;

          IF IN17 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=17;OUT17:=TRUE;RETURN;END_IF;

          IF IN18 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=18;OUT18:=TRUE;RETURN;END_IF;

          IF IN19 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=19;OUT19:=TRUE;RETURN;END_IF;

          IF IN20 = 1 AND Reset = 1 THEN  YAlarm:=TRUE;YTripCH:=20;OUT20:=TRUE;RETURN;END_IF; 

          IF YAlarm = 0 AND Reset = 1 THEN 

             YAlarm :=FALSE;YTripCH :=0;YStep:=0;

             OUT1:=FALSE;OUT2:=FALSE;OUT3:=FALSE;OUT4:=FALSE;OUT5:=FALSE;OUT6:=FALSE;OUT7:=FALSE;OUT8:=FALSE;OUT9:=FALSE;OUT10:=FALSE; 

OUT11:=FALSE;OUT12:=FALSE;OUT13:=FALSE;OUT14:=FALSE;OUT15:=FALSE;OUT16:=FALSE;OUT17:=FALSE;OUT18:=FALSE;OUT19:=FALSE;OUT20:=FALSE; 

          END_IF;

          RETURN;     

                                                                                                              

END_FUNCTION_BLOCK


5.  将SCL源文件编译为CFC可调用的功能块

       SCL源文件编写完成后,将源文件编译,如图5所示。

图5 编译SCL源文件

       编译后可生成CFC跳闸首出功能块,可右键【属性】查看管脚的说明,如图6所示。

图6 生成跳闸首出功能块及管脚说明

6.  CFC编程

       在CFC编辑环境中,建立跳闸首出模块I1_1输入与DI.TPS1300_A点位的连接;I1_2输入与DI.TPS1300_B点位的连接;I1_3输入与DI.TPS1300_C点位的连接;I1_4输入与DI.TPS1300_D点位的连接;如图7所示。

图7 CFC编程

7.  总结

图8 水泥余热发电工艺流程

       基于SCL编程构建的核心控制系统自2010年8月正式投运至今,已连续安全稳定运行近15年。该系统依托SCL语言严谨的结构化特性、强数据类型校验及模块化设计优势,在长期高负荷运行中始终保持零重大事故记录,充分验证了SCL在工业关键控制场景中的超高可靠性与鲁棒性。其代码执行的确定性、异常处理机制的完备性,以及冗余架构下的无缝故障切换能力,为装置的长周期安全运行提供了坚实的技术保障,是工业自动化领域经得起时间考验的编程典范。













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

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

上传附件要求

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

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

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

请填写推广理由:

活动公告 查看全部公告>

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

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

100,000+ 网友与你交流

助你技有所长,论有所获

热门视频,猜你喜欢

本版热门话题

谈天说地

共有13260条技术帖

更多

评选标准

相关推荐

换一换

热门标签

换一换

相关帖子推荐

换一换
正在加载...
guzhang

恭喜,你发布的帖子

被评为精华帖!

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

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

  • 分享

  • 只看
    楼主

top
X 图片

下载中心

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

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

1847工业学习平台

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

培训与认证

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

技术论坛

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

找答案

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

售后服务

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

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

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

欢迎您访问支持中心!

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

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

感谢您的支持!

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