CFC编程常见问题
SIMATIC-PCS-标准培训----CFC编程

4
CFC的编程环境(2)
打开CFC块,缺省只有一个级,可以通过添加达
到26个级,分别以英文字母A-Z表示,在每个级中 又分6页
右边为库,包括西门子自身提供的和用户预先编
写好的块,对于熟悉块名称的用户可以在右下角 直接输入块名搜索到你需要使用的块
2019/1/23
Sciample Training --- SIMATIC PCS7
16
1、驱动技术块3
(2)CH_AO:FC276 实现功能:模拟量输出信号处理 MODE:CFC块编译时选择“产生模块驱动”, 系统自动连接到MOD块 SIM_ON为真值时,输出VALUE由仿真值SIM_U 给出;为假值时,由U给出 UHRANGE、ULRANGE定义量程内的数转换回 码值的量程
Function Chart的缩写。 CFC是基于图形用户界面的编辑器,它通过给预 先编辑好的块指定参数或者建立连接,从而实现 创建CPU程序结构。
2019/1/23
Sciample Training --- SIMATIC PCS7
3
CFC的编程环境(1)
2019/1/23
Sciample Training --- SIMATIC PCS7
2019/1/23
Sciample Training --- SIMATIC PCS7
18
2、控制技术块1
(1)常规PID控制块 CTRL_PID:FB61
适用场合: 固定设定值控制
串级控制 比例控制 比值控制
2019/1/23
Sciample Training --- SIMATIC PCS7
9
CFC的编程环境(7)
CFC编程步骤: 组态 编译 下载 测试 (1)组态:从主数据库中把需要用到的块拖到相应 的程序区域中,修改参数值,连接相应块的输入 输出接口。
CFC编程时如何自动生成相应的错误处理OB

CFC编程时如何自动生成相应的错误处理OB How to generate error handling OB by CFC program摘要本文简单介绍了通过CFC进行程序编写时,如何通过编译的方式自动产生所需的故障诊断OB。
关键词 CFC,错误处理OB,防停机,Step 7Key Words CFC, Error handling OB, Anti stopping, Step 7IA&DT Service & Support Page 2-7Step 7系统中使用CFC编程时,通过编译CFC系统将自动生成所需的程序代码。
但为了防止CPU故障情况下停机,则需要手动在Blocks文件夹中添加错误处理OB(例如OB86等)。
但重新编译CFC后,这些手动添加的OB则会被系统删除。
如何能让系统自动生成这些错误处理的OB呢?本文将通过如下的简单实例介绍具体的组态过程。
1.打开项目,在Blocks文件夹中右键插入一个FB图 1 插入FB块2.定义FB块的块号及符号名,避免和项目中实际使用的FB冲突。
图 2 定义FB块号IA&DT Service & Support Page 3-73.切换到属性页面,加入属性S7_tasklist属性,值(Value)设置为OB80,OB81,OB82,OB83,OB84,OB85,OB86,OB88,OB121,OB122。
各OB之间通过逗号隔开。
点击OK关闭该功能块的属性定义对话框。
(注意标点符号不能使用中文的全角标点符号)图 3 定义功能块的S7_tasklist属性4.双击打开该功能块,任意定义一个输入管脚,如下图所示。
图 4 任意定义该功能的管脚IA&DT Service & Support Page 4-75.任意打开一个CFC,并在CFC中调用该功能块即可。
图 5 任意CFC中调用该功能块6.编译CFC后,系统将会根据上述定义自动生成相应的错误处理OB,防止相应错误发生时CPU停机。
CFC常见问题

CFC常见问题1、为了能对DB 和FC 进行编程,而不受CFC 影响,DB 和FC 如何在编译过程中保持不被占用的状态?( 8 KB ) ( 11 KB )( 10 KB ) ( 19 KB )描述:在CFC中生成的S7-SCL 源代码不能在S7-SCL 中直接打开和编译。
上述现象和信息可能会在大的CFC项目中出现,并且在有大量S7-SCL 源代码的情况下也会出现。
SCL 编译器的注意事项:当使用S7-SCL 编译器编译图表时,请确认在一个任务或运行系统组中没有安装太多块;否则,块就会变得太多和太大,导致S7-SCL 编译器出现上述错误信息。
可通过分割块为几个运行系统组以避免这一情况。
在编译过程中会产生一些小的函数( FC) 。
在S7-SCL编译器中大的CFC 结构的编译过程需要花很长时间;在某些情况下,可能会有几分钟没有进程指示。
补救措施:消息∙“块中符号名称太多”∙“因语法错误编译中止”会出现在,块生成时超出了S7-SCL 编译器中的内部系统限制。
这是因为调用了太多块(例如OB35) 或块的符号名称太长,因此您应将块调用拆分成不同的运行系统组。
相关的更多信息可见手册“S7连续功能图的CFC ”(条目号1139062)。
注意:如果您仍然使用S7-SCL 版本V5.1,我们推荐您安装SP5 (Service Pack 5)。
您可以通过条目号17061717下载。
为什么插入到块文件夹中的错误OB在编译过程中被删除?而且也没有生成CFC中已组态的OB84?描述:在CFC选项包中,编程到块文件夹中的空的错误OB会在编译过程中自动删除。
结果,所要的OB没有在加载过程中传送到控制器中。
补救措施:插入一个无意义的块(如NAND)到CFC图中。
打开“运行时间顺序”窗口(“编辑>运行时间顺序”)并将此块放到所要的OB中。
因此,在编译过程中CFC就会生成组织块。
注意事项:当驱动发生器在PCS 7的范围内使用时会自动生成错误的OB。
数控编程中的程序调试与错误排查方法

数控编程中的程序调试与错误排查方法在数控编程中,程序调试与错误排查是非常重要的环节。
一旦出现错误,可能会导致机床运行异常甚至损坏工件。
因此,程序员需要掌握一些调试和排查错误的方法,以确保程序的正确运行。
一、调试方法1. 逐行调试:这是最常用的调试方法之一。
程序员可以逐行查看程序的执行过程,通过观察每一行代码的执行结果,找出错误所在。
在调试过程中,可以使用断点功能,使程序在某一行暂停执行,以便程序员观察程序的运行情况。
2. 输出调试:在程序中添加一些输出语句,将程序中的关键变量的值输出到屏幕上,以便程序员可以观察变量的取值情况。
通过观察输出结果,可以判断程序是否按照预期执行。
3. 二分法调试:当程序较长或复杂时,可以采用二分法调试的方法。
将程序分为两部分,先调试其中一部分,如果没有错误,则说明错误在另一部分;如果有错误,则继续将有错误的部分二分,逐步缩小错误范围,直到找到错误所在。
二、错误排查方法1. 检查输入数据:在程序中,输入数据是非常重要的。
程序员需要仔细检查输入数据的格式、范围等是否符合要求。
如果输入数据有误,可能会导致程序运行错误。
2. 检查变量赋值:程序中的变量赋值也是容易出错的地方。
程序员需要检查变量的赋值是否正确,是否遗漏了某些赋值操作。
3. 检查循环和条件语句:循环和条件语句是程序中常用的控制结构。
程序员需要仔细检查循环和条件语句的逻辑是否正确,是否有遗漏或多余的条件。
4. 检查函数调用:在程序中,函数的调用是常见的操作。
程序员需要检查函数的调用是否正确,是否传递了正确的参数,是否返回了正确的结果。
5. 检查数学运算:数学运算是程序中常见的操作。
程序员需要仔细检查数学运算的公式是否正确,是否有遗漏或错误的运算符。
6. 检查语法错误:语法错误是编程中常见的错误之一。
程序员需要仔细检查程序中的语法是否正确,是否有遗漏或错误的括号、分号等。
总结起来,数控编程中的程序调试与错误排查方法包括逐行调试、输出调试、二分法调试等。
DIGSI软件的使用及CFC编程论文

天津石化炼油部电气车间技术论文西门子继电保护软件DIGSI 4的使用及CFC简单编程姓名:张*2010年4月20日摘要本文主要描述西门子综保的调试设置软件DIGIS 4的功能及设置方法编写的。
从建立工程设置配电结构,到工程参数的设定和信息配置,最后到CFC逻辑编程,讲述了DIGIS 4软件的各个关键功能。
DIGIS 4软件的工程参数的设定和信息配置是软件的最基本的功能,CFC编程是DIGIS 4软件的精华部分。
工程参数的设定和信息配置可以实现对西门子继电保护装置进行定值的设定、跳闸出口及LED灯的定义等工作,而CFC逻辑函数可以实现我们需要的特殊功能。
论文中还结合1#区域变的电机反时限过流保护有延时闭锁的问题,给出合理建议,并使用CFC编出逻辑函数,确保电机启动过程中仍有速断、过流两套保护,提高保护的可靠性。
DIGIS 4软件中参数的设定是技术人员需要掌握的技能,同时掌握信息配置和CFC编程对今后的工作也是有很大的帮助。
关键词:DIGIS 4软件,建立工程,设置配电结构,参数设定,信息配置,CFC编程,切换定值组,限定电流值第一章建立工程及设置配电结构天津石化炼油部所使用的继电保护装置多为西门子厂家的7SJ--系列综保,这就要求我们对西门子继电保护软件DIGSI 4有一定的了解并能够轻松地使用此软件。
在此,我将对DIGSI4软件的应用进行详细介绍。
要使用DIGSI4软件进行保护定值参数的设定及CFC逻辑编程,首先要建立一个工程并设置其配电结构,这就需要解决以下三个问题:如何创建一个新工程如何在该工程中添加文件夹如何添加SIPROTEC 4 装置至该工程下面就让我来解决这三个问题。
打开DIGISI 4软件后,点击文件→新建。
在新建对话框中输入工程名称LX。
然后点击确定。
DIGSI4管理器会打开一个新工程窗口。
列表视图中已经包含了一个文件夹,且直接命名为文件夹。
既然其它要插入的文件夹都要相应地命名,不如给它一个和工程相关的名字。
PCS7_V8.2的CFC的常用功能与操作

PCS7_V8.2的CFC的常用功能与操作
调用在线帮助信息 (1)
互联到地址 (1)
互连两个块 (2)
为CFC中调用的功能块进行设置 (2)
为CFC中调用的功能块的 I/O进行设置 (3)
显示隐藏的 I/O (5)
切换 CFC 视图 (5)
CFC的运行组顺序 (5)
CFC编译和下载 (7)
CFC编译/下载的选项设置 (8)
CFC 测试 (9)
对FB进行使能/禁用 (10)
对IO值进行取反 (11)
为IO数据设置OS变量归档 (12)
回读(Read back) (13)
块清理与块更新 (14)
交叉索引(Cross Reference) (14)
调用在线帮助信息
选择CFC 图表任意位置单击F1,调出CFC帮助
选择具体的功能块,例如一个APL库功能块,单击F1 键,将调出该库(如APL)的帮助文件
互联到地址
可以为CFC中的功能块关联的实际的IO地址、M区地址、DB块地址。
选中IO右键->Interconnection to Address,如果为数据定义了符号名并且数据格式与IO匹配,则自动出现在下拉列表中。
否则需要手动输入绝对地址。
互联的数据可以是简单数据类型或结构体类型,不支持指针访问。
互连两个块
先选择一个块的输出,然后再选择另一个块的输入,将这两个参数进行互连。
在进行互连时,无需考虑选择的顺序。
要在两个图表之间建立互连,则需打开这两个图表。
然后单击一个图中的输出,再单击另一个图中的输入(选择顺序可不同)。
为CFC中调用的功能块进行设置
双击功能块进行属性设置。
CFC编程你不得不知的功能块图标状态

题:【分享】CFC编程你不得不知的功能块图标状态普通的BlockBlock 的EN使能管脚被连接了BOOL变量,CFC执行与否根据BOOL值的真假红色感叹号,该功能在CFC运行组内被禁用蓝色标签,表面上看该功能块没有连线,其实蓝色标签就是表示该功能块有一个或以上的管脚被连线,但是被隐藏了(visible:= true)。
这个就是chart in chart了,图中图,其实就是将图表拖拽到另一个图表里,Chart in Chart可以自定义输入输出接口,项目里使用过几次,还挺合适。
管脚连线处被标记为黑色的点,其实是因为SFC编程的时候,这些变量被引用了。
要注意的是,如果CF C又对其连线,同时SFC又对其引用控制,就会出现优先权问题。
SFC外部控制图,我理解为实现SFC顺控功能隐藏的功能块,状态机的状态转换,SFC可视化的操作监视的变量都在这里面。
绿色高亮,表示下一个功能块插入你刚新插入的块,图中右上角的为什么执行的结果不对了?对脉冲CFC 接口属性:管脚状态监视1. 可以在CFC2. 在创建FB 方在初次使用就勾右击"BOOL_IN"块插入的位置就是在这个功能块后面,CFC 的扫描顺序,会经角的 2/1,15/1等指示的都是扫描顺序,很多工程师问:我的对脉冲来的标志位接受不到等都有可能是这个顺序没调整好。
右击Block 上的"BOOL_IN",勾选被监视。
(默认不监视)时在BOOL_IN 的接口属性里标记好S7_dynamic 属性为true 用就勾选被监视。
操作步骤:在simatic manager 里选中_IN"属性,会经过该块后再扫描:我的逻辑都正确啊,整好。
监视)就可以使这个地选中block,双击打开,。
CFC基础知识培训

第一章CFC必备基础本章目的是介绍关于CFC的基本信息:1)介绍CFC是如何结合到STEP7软件包中的;2)描述了块的概念;3)创建工程、测试工程的基本步骤。
什么是CFC?CFC(continuous function chart)是与STEP软件包结合使用的一个可视化图形编辑工具。
类似的其他的编程工具有:SCL、STL、LAD、FBD等.利用已经创建好的块来为某个CPU创建整个特定功能的软件框架基本过程就是把块拖入功能图表,赋给一定参数,然后把块相互连接起来。
(所谓块与块的相互连接就是把某个块的输出的值通过各种通讯方式传递给其他一个或多个块的输入)●用CFC编程你不再需要自己去关注算法以及计算机资源的分配和管理(如定义变量时分配内存地址等),而只需要把注意力集中到应用程序的工艺逻辑方面.(实际上这样做的坏处是把计算机资源完全与用户隔离起来,也就是开发程序必须以siemens已经提供的块为基础,其他的计算机资源用户是无法访问到的。
这样也就把很多原来的Plc编程时候常用的编程技术给废除了。
)●某个块或者一组块可以一起拷贝或者移动,而不会破环它们相互之间的连接,这可以为编程省下很多的时间。
(方法:选上、ctrl+鼠标拖动)名词解释ProjectCPUProgramCharts folder Chartchart partitions Sheetssheet bars Overflow page Nested chart Chart overview sheet viewCFC中的块块-—-block块类型定义规定了这个块的算法,块的名字,以及数据接口(即输入输出参数)块的名字一般是块功能的简化缩写。
块的数据接口,即输入输出参数的数据类型有:实型、整型、布尔型等.如下表示S7块的实例——-block instance当把某个类型的块从块的库里面拖出来放到CFC的chart里面的时候,就已经为这个类型的块创建了一个实例了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CFC编程常见问题目录1、CFC里能不能调用LAD/STL编写的FC/FB2、如何查看CFC中给用户预留的FC/DB范围3、修改FC/DB块范围时报错4、CFC中如何监控功能块和变量5、如何禁用部分CFC的执行6、CFC编译时为何将创建的OB块删除了7、没有驱动块的CFC程序编译时如何自动生成诊断OB8、如何将CFC的Chart编译成一个功能块9、如何一次打印所有的CFC10、如何将IO管脚的数据类型显示出来11、CFC中使用IN_OUT管脚,为何只能接输入12、CFC中的功能块的EN管脚能否通过逻辑来控制13、CFC编译时为何报超过64K的上限问题1.CFC里能不能调用LAD/STL编写的FC/FB在CFC中可以调用其他编程语言编写的FC/FB,例如使用LAD编写的设备逻辑处理代码等。
使用LAD/STL等编写FC/DB时需要注意功能块号的选择,具体信息请参考问题2;问题2.如何查看CFC中给用户预留的FC/DB范围在CFC的编程窗口中,依次打开菜单项“Options”→“ Customize”→“Compile/Download”:在弹出的窗口中,“Areas Reserved for Other Applications”中可以设置和查看给用户预留的FC和DB范围:问题3.修改FC/DB块范围时报错CFC编译过程中会根据Chart中插入的功能块和运行组的设置,自动创建FC和DB块。
如果程序中还有通过LAD/STL/FBD创建的FC和DB,在CFC编译过程中为了保护这些用户代码,可以指定哪些范围中的FC和DB块被保留。
根据实际需要可以调整预留的FC和DB块的范围,但在调整过程中,可能会弹出如下错误提示:导致这个问题的原因是设置的新范围并不能涵盖所有用户自定义的FC/DB。
可以将涉及到的FC/DB修改块号来适应新的范围。
在FC/DB的范围设置窗口中还可以通过“Compress”选项来调整CFC相关的FC/DB以实现块号的连贯性。
但使用这个功能需要注意:1、使用Compress之前使用Read Back功能回读参数;2、Compress之后需要对CPU进行全部下载;3、对OS重新编译和下载。
问题4.CFC中如何监控功能块和变量完成CFC的编译和下载之后,点击工具栏上的按钮,即可开启测试模式(“TestMode”)。
在测试模式下选中需要监控的功能块,点击右键选择“Watch On”,或者在菜单“Debug”下选择“Watch On”。
此时该功能块的监控列表(“Watch List”)中包含的管脚都会开始监控。
如果需要监视该功能块的其他管脚,则可以选择该管脚,点击右键选择“AddI/O”,或者点击功能工具栏上的即可将其添加到功能块的Watch List中:每次开启测试模式,所有的功能块管脚不会自动被监控,这是因为默认情况下,CFC为了降低监控通讯负荷对AS的影响,都是在运行模式(“Process Mode”)工作。
但是,也可以在CFC编程窗口的菜单项“Debug”中选择“Laboratory Mode”来激活实验室模式。
工作在这种模式下,只要测试模式开启,CFC中所有功能块的Watch List中包含的管脚都会自动被监控。
问题5.如何禁用部分CFC的执行默认情况下,CFC中插入的功能块都是隶属于某个OB3x下、以CFC名称命名的运行组。
双击功能块上的高亮区即可打开运行组窗口:在运行组编辑器中也可以自己创建新的运行组,将需要禁用的功能块拖放到其中。
在程序中可以通过一个BOOL类型的输出来激活/禁止一个运行组,具体过程是:选择一个功能块的BOOL类型输出管脚,点击菜单项“Insert” “Interconnection toRuntime Group…”:编译下载程序。
只要上图中“StruDiIn”的管脚“Value”为0,名为“TIC1003”的运行组就会被禁止执行。
问题6.CFC编译时为何将创建的OB块删除了CFC中包含驱动块,且选择了“Generate module drivers”,那编译过程中会尝试重新生成诊断OB(例如OB85/86/101/102等)。
如果用户已经创建了诊断OB,且内容为空,在编译时则会删除空的诊断OB并生成新的,如下警告信息:如果用户创建的诊断OB中已经有内容,则编译时就会报错:问题7.没有驱动块的CFC程序编译时如何自动生成诊断OBStep 7系统中使用CFC编程时,通过编译CFC系统将自动生成所需的程序代码。
但为了防止CPU故障情况下停机,则需要手动在Blocks文件夹中添加错误处理OB(例如OB86等)。
但重新编译CFC后,这些手动添加的OB则会被系统删除。
如何能让系统自动生成这些错误处理的OB呢?本文将通过如下的简单实例介绍具体的组态过程。
1.打开项目,在Blocks文件夹中右键插入一个FB图 1 插入FB块2.定义FB块的块号及符号名,避免和项目中实际使用的FB冲突。
图 2 定义FB块号3.切换到属性页面,加入属性S7_tasklist属性,值(Value)设置为OB80,OB81,OB82,OB83,OB84,OB85,OB86,OB88,OB121,OB122。
各OB之间通过逗号隔开。
点击OK关闭该功能块的属性定义对话框。
(注意标点符号不能使用中文的全角标点符号)图 3 定义功能块的S7_tasklist属性4.双击打开该功能块,任意定义一个输入管脚,如下图所示。
图 4 任意定义该功能的管脚5.任意打开一个CFC,并在CFC中调用该功能块即可。
图 5 任意CFC中调用该功能块6.编译CFC后,系统将会根据上述定义自动生成相应的错误处理OB,防止相应错误发生时CPU停机。
图 6 CFC编译后将自动生成相应OB注:使用PCS 7进行程序编写时,无需按照上述方面系统即可自动生成所需的OB。
问题8.如何将CFC的Chart编译成一个功能块CFC的Chart在默认情况下都是作为一个项目程序(Program)来编译的,但也可以编译成一个和FB一样的功能块。
选择菜单项“View”中的“Chart Inputs/Outputs”,或者点击工具栏上的,可以打开Chart 的I/O窗口,和FB下类似:在Chart中设置输入IN、输出OUT或者输入_输出IN_OUT,通过拖放和Chart中的功能库的相同数据类型管脚连接。
完成程序编写之后,依次点击菜单项“Chart”→“ Compile”→“ Chart as Block Type…”:在弹出的窗口中设置功能块号、符号名、参数等即可。
问题9.如何一次打印所有的CFC在CFC编程窗口中的“Chart”菜单项下点击“Print…”可以打印当前的Chart中的内容,但不能实现所有CFC内容的打印。
要实现一次性打印所有CFC内容,需要使用DOCPOR。
在工厂视图(或者组件视图)下,在单项目的右键菜单插入“Project Documentation”:双击生成的“Documentation”,打开DOCPRO配置窗口。
首次打开会有一个初始化的过程。
在DOCPRO中“Documentation”的右键菜单中选择“Insert Wiring Manual”:点击之后,就可以选择需要包含的内容:如上图所示,将工程视图中CFC选择,其会自动添加在一个打印任务中:和CFC编程界面下的打印一样,需要设置CFC打印的内容,在添加进来的CFC(或全选所有CFC)上点击右键,选择“Object Properties”:在属性窗口中,修改View标签页中的内容,选择“Sheet”:完成以上设置后,直接在打印任务“Job List”的右键快捷菜单上触发“Print”即可将其中添加进来的所有CFC全部打印出来:问题10.如何将IO管脚的数据类型显示出来CFC中是可以将功能块管脚的数据类型显示出来的,在编程窗口中,点击菜单“Option”→“ Customize”→“ Layout”:在弹出的设置窗口中,检查“I/Os”中是否已选择为“Name(and type)”,默认情况下这个选项是被选择的:之后,设置功能块的显示宽度:在其中修改Block width为“Wide”即可:完成设置之后,Chart中的所有功能块都变宽了,且管脚数据类型也显示出来了:问题11.CFC中使用IN_OUT管脚,为何只能接输入在将CFC的“Chart I/O”中定义的“IN_OUT”接口,只能和Chart中功能块的“IN”或者“IN_OUT”类型相连接,不可以和“OUT”类型连接。
问题12.CFC中的功能块的EN管脚能否通过逻辑来控制默认情况下CFC功能块的EN管脚是隐藏的,可以在功能块的“I/Os”中取消EN管脚的“Invisible”属性选择。
Chart中可以通过其他功能块的BOOL类型输出来连接EN管脚:连接EN端之后,功能块的高亮区加了一个黄底的问号,这表示功能块的执行与否不确定。
在运行过程中EN端变成0,或者直接在编程过程中赋值为0:其中的红底感叹号表示该功能块不会被执行。
所以,CFC中功能块可以通过EN来控制控制块执行与否,但需要注意其使能条件,以免出现功能始终无法执行的问题。
问题13.CFC编译时为何报超过64K的上限进行CFC编译的时候会报如下错误:这个问题是指编译过程中生成功能块时,其大小超过64K的上限。
如下是出现该问题之前的最近一次正常编译之后最大的功能块:此时CFC编译生成的FC的大小接近64K了,在增加了少量程序之后再编译就出错。
对于CPU而言,其能支持的单个FC/FB最大规模为64K,所以在CFC编译生成FC超过这个限制后就会报错停止:导致这个问题的原因是CFC的运行组设置不合理,如下图所示,所有的功能块都集中在一个运行组或者直接在OB3x中,这样就容易让编译生成的FC规模过大。
解决这个问题就可以根据功能块之间的联系、或者工艺关系来多划分运行组,让每个运行组中的功能块个数不要过多。