湖南西控自动化设备有限公司
主营产品: 工程型传动 通用变频器与通用伺服 数控系统 伺服电机 FA工厂自动化 PA过程自动化 Simoreg DC Master、Sinamics DC Master、Sinamics G130/G150、S120 装机装柜型/柜机、S150柜机等系列产品 保外的现场服务和室内维修,不包含水冷装置 Sinamics V20、部分G120C 和G120、G120X、G120XA,V90和配套的1FL6电机等系列产品保内及保外的 室内维修、现场服务,以及保内更换服务。保内标准服务类型由翩唉啊搏碍臂哎阿哎唉熬癌 唉啊哀挨安挨艾挨包爸焙 蚌安岔挨哀靶柏材挨宾哀挨捌安熬袄唉 伴义 828D数控系统保内和保外的现场服务 进口1FK2、1FK7、1FT2、1FT7、1PH81、1PH82等系列产品的保内及保外的室内维修、现场服务,以及保内更换服务 西门子 PLC 、HMI、SCADA 、 IPC、SIMOTION 等产品及网络相关产品的保外现场服务(具体服务产品、类型,以西门子派遣为准)。PLC : S7-200、S7-200 Smart、S7-300、S7-400、S7-1200和S7-1500等系列HMI : TP系列、OP系列、MP系列,精简面板、精智面板和移动面板;SCADA : SIMATIC WinCC及其选件,Portal WinCC Advanced / Professional及其选件;IPC: SIMATIC Flat Panel 系列、SIMATIC Panel PC 系列、SIMATIC BOX PC系列利I SIMATIC Rack PC 系列;SIMOTION: SIMOTION 系列相关产品 西门子过程自动化产品的保外现场服务具体服务产品、类型,以西门子派遣为准)。包括: S7-400,S7-400H,S7-410,故障安全型产品,ET200PA,ET 200SP,ET200ISP,SITOP电源产品,Scalance交换机,PCS 7软件
江西省赣州市西门子中国总代理-西门子选型-西门子技术支持-西门子维修服务

1.1沿指令概述

      沿指令即在程序中用于检测信号的上升沿或下降沿的指令。

      在SIMATICS7-1500和S7-1200PLC中,选择编程语言为SCL时,可以看到TIAPortal软件自带两个指令分别用于检测信号的上升沿和下降沿,如图1所示:

 

图片

图1

    在程序中调用R_TRIG或F_TRIG时,系统会自动生成1个背景DB块,用于存放检测信号的边沿存储位,当程序中有较多信号需要检测上升沿或下降沿时,就会产生多个背景DB块,这样一来,过多的背景DB块不仅仅不便于管理,且会过多占用CPU宝贵的存储区。

     以SIMATICS7-1200PLC为例,存储区分为工作存储区,装载存储区,保持性存储区,其中工作存储区和保持性存储区不可扩展,不同的CPU具有不同大小的存储区,如图2所示:

 

图片

图2

     假设选定S7-1211C进行编程,如果在程序中应用了很多R_TRIG或F_TRIG指令,则实际程序需要的工作存储区有可能超过50kB,此时需要更换工作存储区更大的PLC来加以解决,所以适当优化程序,占用较少的工作存储区,十分必要。

      本文以S7-1200为例,皆在阐释如何使用SCL语言开发沿指令以减少工作存储区使用。

1.2开发检测上升沿指令

      为了不产生背景DB块,我们在FC中使用SCL语言进行开发,并引入第三方变量作为检测信号的边沿存储位。

新建FC

新建FC并选择编程语言为SCL,FC块命名为:RisingEdgeDetection,如图3所示:

 

图片


图3


定义接口

根据编程需要定义接口变量,并写明注释,修改Return变量的数据类型为Bool,用于输出上升沿信号,持续一个周期,如图4所示:

 

图片


图4

编程

根据上升沿检测原理进行编程,编程思想如下:

当 #signal由0变成1时,此时作为边沿存储位的 #thirdVariable仍保留#singal信号上一周期的状态,#thirdVariable为False,此时满足IF语句,RisingEdgeDetection被赋值为True。

当 #signal由0变成1后的下一周期,#thirdVariable上个周期已被 #signal赋值为相同状态,即#thirdVariable和#signal都为True,则不再满足IF语言,RisingEdgeDetection被赋值为False。

RisingEdgeDetection输出持续一个周期。

程序代码如图5所示:

图片

图5

1.3开发检测下降沿指令

与开发检测上升沿指令类似,新建FC并定义接口变量,这里不再一一赘述。在编程上两者有所不同,其编程思想如下:

当#signal由1变成0时,此时作为边沿存储位的#thirdVariable仍保留#singal信号上一周期的状态,#thirdVariable为True,此时满足IF语句,FallingEdgeDetection被赋值为True。

当#signal由1变成0后的下一周期,#thirdVariable上个周期已被#signal赋值为相同状态,即#thirdVariable和#signal都为False,则不再满足IF语言,FallingEdgeDetection被赋值为False。

FallingEdgeDetection输出持续一个周期。

程序代码如图6所示:

图片 图6


展开全文
相关产品
拨打电话 微信咨询 发送询价