S7-CFC编程
Programming with S7-CFC
Getting Started Edition (2008年11月)
摘 要
本文档主要用于讨论与S7-CFC编程相关的以下问题: 编程软件的基本信息 基本概念讲解 基本使用讲解
用于示例工程的简单应用例子 实际使用中常见问题及讲解
关键词
编程工具;Step7;梯形图;语句表;S7-SCL;S7-CFC
Key Words
Programming tools; Step7;LAD;STL;S7-SCL;S7-CFC
IA&DT Service & Support
Page 2-48
目 录
S7-CFC编程..............................................................................................................1 1. 前言....................................................................................................................6 2. 软件的基本信息..................................................................................................6
2.1. 2.2. 2.3. 2.4. 2.5.
S7-CFC简介.......................................................................................................6 CFC 与SCL及STL:.......................................................................................7 CFC的安装与使用:........................................................................................7 S7-CFC软件兼容性...........................................................................................7 S7-CFC中英文词汇对照关系...........................................................................7
3. S7-CFC基本概念与基本使用..............................................................................8
3.1.
S7-CFC程序构成元素.......................................................................................8 3.1.1. Charts(图表)....................................................................................................................8 3.1.2. Chart Partitions(图表分区)......................................................................................10 3.1.3. Sheet(页) 及 Sheet Bars(页边条)........................................................................10 3.1.4. Overflow Page(溢出页)................................................................................................11 3.1.5. Nested Charts (嵌套图表)..............................................................................................12 操作S7-CFC程序块.........................................................................................12 3.2.1. 程序块的导入......................................................................................................................12 3.2.2. 程序块的清除与更新..........................................................................................................14 3.2.3. 引用程序块改变对系统的影响..........................................................................................14 编辑S7-CFC程序块.........................................................................................16 3.3.1. 设置对象属性......................................................................................................................16 3.3.2. 修改输入/输出的数量.........................................................................................................16 修改输入/输出的属性.....................................................................................17 3.4.1. 取反一个块的输入..............................................................................................................18 3.4.2. 使用数值标识......................................................................................................................18 3.4.3. 定义数据归档......................................................................................................................20 Interconnections(连接关系)......................................................................20 3.5.1. 与共享地址的连接..............................................................................................................21 3.5.2. 与Run-Time Groups的连接.................................................................................................21 3.5.3. 文本连接..............................................................................................................................21 3.5.4. 组态数据结构之间的连接..................................................................................................22
3.2.
3.3.
3.4.
3.5.
IA&DT Service & Support
Page 3-48
3.6.
运行时间属性..................................................................................................23 3.6.1. 块的运行时间属性..............................................................................................................23 3.6.2. CPU的运行时间属性..........................................................................................................23 3.6.3. 生成Runtime Group.............................................................................................................24 3.6.4. Runtime Group的属性.........................................................................................................25 编译...................................................................................................................25 3.7.1. 将chart编译为程序..............................................................................................................25 3.7.2. 将chart编译为FB.................................................................................................................26 下载用户程序至目标系统..............................................................................27 3.8.1. 下载完整程序(Entire program)......................................................................................27 3.8.2. 仅下载改变(Changes only)............................................................................................27 3.8.3. 防止CPU进入STOP状态....................................................................................................28 回读Chart........................................................................................................29 3.9.1. 修改过的数据Modified Data..............................................................................................29 3.9.2. 回读Reading Back...............................................................................................................30 3.9.3. 回读之后..............................................................................................................................30 测试及调试......................................................................................................31 3.10.1. 测试模式Test Modes.........................................................................................................31 3.10.2. 监控块的输入/输出...........................................................................................................31 3.10.3. 动态显示(Dynamic Display)........................................................................................32
3.7.
3.8.
3.9.
3.10.
4. CFC应用于虚拟工程...........................................................................................33
4.1. 4.2.
虚拟工程工艺要求..........................................................................................33 CFC简单示例..................................................................................................33
5. S7-CFC常见问题..............................................................................................42
5.1.
与监控调试相关问题......................................................................................42 5.1.1. 问题:在S7-CFC中如何监控单独的FC ?.........................................................................42 5.1.2. 问题:对于内部嵌套功能块连接有何?....................................................................43 5.1.3. 问题:编译时出现信息“SCL 编译器不能执行”或“块中符号名称太多”?.............43 5.1.4. 问题:CFC中最多能够显示多少个输入/输出?................................................................43 5.1.5. 问题:在LAD编辑器中启用监控功能时,为什么会出现信息“30:484”?..................43 与使用技巧相关问题......................................................................................44 5.2.1. 问题:如何将OB的本地数据传送给CFC的chart 使用?..................................................44 5.2.2. 问题:如何将“MUL_R”块和“DWORD”的操作数互连到一起?....................................45 5.2.3. 问题:如何添加S7-CFC之外的 DB 和 FC ?....................................................................45 5.2.4. 问题:如何启用CFC chart的加密功能?............................................................................46
5.2.
6. 附录-推荐网址................................................................................................47
IA&DT Service & Support
Page 4-48
6.1.
西门子自动化与驱动产品的在线技术支持..................................................47
重要提示:本文为技术交流文档,不能作为订货、选型等重要事宜的唯一依据,建议用户参考 Siemens的标准产品样本和技术手册进行产品的选型和订货。
IA&DT Service & Support
Page 5-48
1. 前言
本文可以作为S7-CFC编程语言的使用参考资料,希望读者通过对本章的阅读,能够更快更好地学习S7-CFC编程语言。西门子提供了S7-CFC编程语言的详尽手册,在安装S7-CFC软件包后,通过点击Windows菜单 开始->Simatic->Documentation->English可以阅读到名称为“CFC - Manual for S7”的PDF手册。此手册共分为5个章节,其详细地讲解了S7-CFC编程语言。一切关于S7-CFC使用的问题请以此手册为准。
相对于其它编程语言,S7-CFC有着它本身一些特性,一些独特的概念也比较难于理解。本文中将对S7-CFC手册中的部分内容作出额外强调与讲解,虽然这些讲解与手册有重叠之处,但希望通过这些讲解能够使用户更快地掌握S7-CFC的使用。在讲解内容之后,再列举出一些用户在实际使用当中经常会遇到的问题,希望能够对用户有所帮助。
S7-CFC可以单独作为编程语言使用,本文所讲述的内容仅限于其普通编程方式。对于S7-CFC在西门子的PCS7及运动控制系统中的应用。由于PCS7及运动控制的一些特性,本文不再讲述。相关资料读者可以参考西门子PCS7及运动控制方面的资料。
相关手册地址连接:
S7-300和S7- 400的梯形图 (LAD) 编程
http://support.automation.siemens.com/CN/view/zh/186395S7-300 和S7-400 的语句表 (STL) 编程
http://support.automation.siemens.com/CN/view/zh/18653496使用STEP 7 V5.3 编程
http://support.automation.siemens.com/CN/view/zh/18652056S7-CFC for SIMATIC S7
http://support.automation.siemens.com/CN/view/zh/244513392. 软件的基本信息
2.1. S7-CFC简介
S7-CFC (Continuous Function Chart 连续功能图表) 具有以下特点: 通过绘制功能图表来自动生成程序
拥有强大的预制程序库,同时也可使用STEP7中的标准块 通过简单的连线来降低开发成本并减少错误 IA&DT Service & Support
Page 6-48
优化集成在STEP7中,与STEP7 兼容
适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinAC S7-CFC 不仅仅具有PLC典型的元素(例如 输入/输出,定时器,计数器, 符号表),而且具有图形化编程语言语言的特性,其非常适合于如下任务:
过程控制 系统工程
2.2. CFC 与SCL及STL:
CFC会生成SCL代码,最终编译成STL。其代码量相对于STL 编程有所增加。
2.3. CFC的安装与使用:
STEP7各个版本均并不包括CFC软件包及授权,需单独购买。一般情况下,在S7程序中,S7-CFC会组织整个项目,调用其它编程语言生成的块。用户也可以在项目中编写于S7-CFC的程序,单独下载调试这部分程序,但用户应当尽量避免这种用法。
2.4. S7-CFC软件兼容性
不同S7-CFC 软件版本与STEP7及操作系统之间的兼容性:图中的 X 表示兼容,- 表示不兼容
表2-1 S7-CFC软件兼容性
注:1)仅仅S7-CFC V6.1+SP1 或以后版本支持
2.5. S7-CFC中英文词汇对照关系
由于很多英文的科技专用词汇没有明确统一的中文词汇,所以在本文的讲解当中,尽量保持手册中的英文信息。本文中将尽量减少使用中文词汇代替英文专用词汇,需要代替的中英文词汇对照关系如下:
• Chart
图表
图表分区 嵌套图表 页边条 操作员站
• Chart Partition • Nested Charts • Sheet Bar • OS
IA&DT Service & Support
Page 7-48
• AS 自动化站(控制器)
3. S7-CFC基本概念与基本使用
3.1. S7-CFC程序构成元素
作为STEP7的选项包,S7-CFC软件在安装后,将被集成在STEP7中使用。S7-CFC 编程界面为图形界面,包含若干个Chart。用户在Chart 中以图形的方式插入已经编制好的块,指定这些块之间的连接关系,也可以为这些块分配输入/输出地址。在这种通过鼠标点击托拽的方式完成项目编写后,即可编译项目。S7-CFC程序将被整体编译,其生成的块可以以SCL代码的形式出现(最终将生成STL代码)。用户将这些代码下载到PLC中即可执行。用户可以指定这些程序的运行顺序及运行特性。
3.1.1. Charts(图表)
作为STEP7的选项包,S7-CFC软件在安装后,将被集成在STEP7中使用。S7-CFC 编程界面为图形界面,其基本元素为Chart,每个Chart 在CPU中的名字都是唯一的。可以在SIMATIC Manger或CFC编辑器中生成Chart。
图3-1:生成新S7-CFC程序
IA&DT Service & Support
Page 8-48
通过插入CFC程序,程序文件夹下增加了CFC的基本元素 Charts 文件夹及CFC Chart。可以通过重复插入CFC 的操作,即可生成多个Chart,它们的名称在项目中是唯一的。双击其中的Chart,可以打开S7-CFC程序 (例如CFC(1)) 。
图3-2:多个Chart的视图
在CFC编辑器中,也可以在Chart中点击右键,添加Chart,注意:这种方法生成的Chart
为嵌套Chart,不同于前面生成的普通Chart。
也可以在Chart中点击右键,添加Chart
IA&DT Service & Support
Page 9-48
图3-3:在CFC编辑器中添加Chart
3.1.2. Chart Partitions(图表分区)
每个Chart最多可以包括26个Chart Partition,每个Chart Partition都有自己的名字,用字母表示。可以在CFC编辑器中,右键点击Chart Partition的名称,然后添加新的Chart Partition。
右键点击Chart Partition的名称,然后添加新的Chart Partition
图3-4:在Chart中添加Chart Partition
3.1.3. Sheet(页) 及 Sheet Bars(页边条)
每个Chart Partition包括6个Sheet,它们按照3行2列的形式排列。在CFC编辑器中,可以通过点击缩小按钮,将视图缩小到最小,此时可以清楚地看出Sheet及Sheet Bars的排列位置。每个Sheet包括一个空白工作区及两侧的Sheet Bars。用户可以空白工作区放置需要的功能块,在两侧的Sheet Bars中可以指定这些功能块的连接关系及Chart与Chart之间的连接关系。
IA&DT Service & Support
Page 10-48
Sheet Bar 可以点击缩小按钮,将视图缩小到最小 Sheet4
Sheet Bar Sheet1
Sheet2 Sheet5
Sheet3 Sheet6
图3-5:Sheet 及 Sheet Bar
可以通过点击放大按钮,将视图放大到最大,此时可以清楚地看出Sheet的结构。
连接关系工作区 Sheet Bar
图3-6:Sheet 构成
3.1.4. Overflow Page(溢出页)
当一个Sheet中包含太多的与其它Sheet的连接时,会出现Sheet Bar被完全占用的情况,这时 IA&DT Service & Support
Page 11-48
系统会自动生成overflow page, 这部分仅作为Sheet Bar 的扩展出现。
3.1.5. Nested Charts (嵌套图表)
在一个Chart 中可以嵌入另外一个Chart, 用户可以指定此Chart 的输入/输出及连接关系,操作方法可以参考后续章节中的详细介绍。
可以点击缩小按钮,将视图缩小到最小
图3-7: 嵌套图表
3.2. 操作S7-CFC程序块
3.2.1. 程序块的导入
在CFC编程界面的Blocks的视图中,包含了CFC集成的块,类似于LAD编程环境,用户可以将这些块拖拽到工作区来使用。如果用户希望使用项目中其它的块,例如本项目S7 Program(2)\\Blocks目录中的FB1, FC105等等,则需要通过导入的方式加入到CFC编程界面中。本例CFC编程界面中的 Program (2) 目录,在导入其它块之前,是没有功能块的。如下图:
IA&DT Service & Support
Page 12-48
CFC集成的块,用户可以将这些块拖拽到工作区来使用 此目录中在导入其它块之前,是没有功能块的
图3-8: CFC的Blocks 视图
在菜单Options中,选择Blocks Types…,此时本项目S7 Program(2)\\Blocks目录中的FB1, FC105等等便被显示在对话框的左侧,选择需要的块,点击中间的箭头,则依次可以将需要的块导入到CFC编程界面中
待选列表 已选列表
图3-9: CFC的Blocks 视图
IA&DT Service & Support
Page 13-48
3.2.2. 程序块的清除与更新
如果用户认为在CFC编程界面下存在不必要的块,可以通过Clean Up…按钮来清除在CFC编程环境下未使用的块(CFC程序中已引用的块无法清除)。
清除未使用的块版本更新
图3-10: CFC的Blocks 清除与更新
如果用户在本项目S7 Program(2)\\Blocks目录中的FC105有更改,则可以通过界面中的New Version…,来重新导入FC105。
当用户重新导入块的新版本时,可以分为3种情况:
1. 不需要编译及下载完整程序的修改,此修改与OS (操作员站)无关,仅与ES(工程
师站)有关。此时用户只需要在RUN模式下载变动部分即可(例如某个Block I/O属性修改为隐藏)
2. 修改与OS(操作员站)相关,此时需要对OS(操作员站)项目进行编译(例如修改
一个消息文本)
3. 结构被改变,例如:添加了输入/输出,或者消息文本。这种修改会导致如下结果:
• 连接和参数设置可能会丢失
• 必须编译并下载完整程序,并且CPU必须转换为STOP模式
• 如果此功能块需要被OS(操作员站)监视及控制,则需要对OS(操作员站)
项目进行编译
• 如果用户希望保留在控制器中的参数设置,则用户在下载之前图表之前,首先
应当从控制器当中回读图表。
3.2.3. 引用程序块改变对系统的影响
如果在CFC图表中所引用的程序块的接口描述(程序块的输入/输出)或者系统属性发生了改 IA&DT Service & Support
Page 14-48
变(例如用户在本项目S7 Program(2)\\Blocks目录中的FB1有更改),在CFC中更新FB1的新版本之后,则CFC 图表中所有被使用到的FB1(假设FB1在多个图表中被多次引用),都将自动被更新。
改变程序块的输入/输出对引用的程序块的影响
• 添加一个输入/输出
此更改影响被引用的块,增加的输入/输出被赋予默认的系统属性,如果在块增大后,没有更多的空间来容纳此功能块,则在视图中此功能块将与其它功能块的显示重叠在一起。 • 删除一个输入/输出
此更改影响被引用的块,被删除输入/输出将从被引用的块上删除。如果此输入/输出被赋予了连接关系,则连接关系(或者SFC的访问)也将被删除。此连接关系(或者SFC的访问)被删除的事件将被记录在系统日志当中。 • 改变输入/输出的顺序
当块的输入/输出的顺序被修改,这些输入/输出的连接关系,参数设置及属性将被保留。 • 改变输入/输出的数据类型
所有这些输入/输出的连接关系,参数设置都将丢失。这种情况也在用户删除某个输入/输出后,再重新生成此输入/输出。 • 改变输入/输出的名称
所有这些输入/输出的连接关系,参数设置都将丢失。系统无法自动生成旧名称的参照,这种情况也在用户删除某个输入/输出后,再重新生成此输入/输出。 修改程序块的系统属性对引用的程序块的影响
被引用块的属性将被自动更改。 修改程序块对其它功能块的影响
无法再执行仅仅下载修改的操作(必须下载完整程序)。
由于在控制器中的块与CFC图表中的程序不一致,所以 \"Read Back Chart\" 回读图表功能将无法使用。
修改程序块对WinCC的影响
• 如果块的类型被改变,则当CFC编译时,可能会生成新的DB块。为了保证正常在线访问,这些数据必须重新传送给WinCC(操作员站)。
,则需要遵• 如果块的输入/输出被修改,并且用户希望此点被监视/控制(属性S7_m_c=true)循如下规则:
IA&DT Service & Support
Page 15-48
如果添加一个输入/输出,则当进行OS编译时,此输入/输出可以被WinCC识别,并
被使用
如果删除一个输入/输出,WinCC中的标签将不存在,与此标签的关联关系也应当被
删除
如果更改输入/输出的名称,则在WinCC中的标签名称也将改变。与此标签的关联的
图片、界面等也需要调整。
• 任何影响WinCC的改变,都要求用户重新编译OS(操作员站)
3.3. 编辑S7-CFC程序块
用户可以在图表中编辑块的属性,这些属性可以是整个块的属性,也可以是单独输入/输出的属性。
3.3.1. 设置对象属性
用户可以通过右键点击功能块,选择Object Properties-General,查看块的属性。这些属性中比较重要的是
Name 块在整个图表中的唯一的名称,此名称(最大16个字符)将被显示在块的头部 Operator C and M possible(OCM Possible)如果用户希望此功能块能够被OS监视及控制,可以选择此项,这样就可激活“Operator Control and Monitoring”、“Messages”按钮及“block icon”输入框。
Operator Control and Monitoring 此按钮将打开一个显示哪些输入/输出将被监视/控制的对话框,用户可以在此修改其在WinCC中的属性。
block icon被监视/控制的块可以在WinCC中以块图标方式显示。用户可以在此指定所使用的图标。
Messages此按钮将打开一个组态消息的对话框,用户可以在此编辑消息文本,此文本可以用于传送消息个MIS/MES 管理系统。
3.3.2. 修改输入/输出的数量
如果程序块拥有可变数量,同数据类型的输入,例如NAND, OR 等等,用户可以通过使用\"Edit >Number of I/Os...\"菜单命令来更改输入的数量。下图为更改AND功能块输入数量的界面,默认输入数量为2,最大为120。
IA&DT Service & Support
Page 16-48
图3-11: 更改AND功能块输入数量
3.4. 修改输入/输出的属性
用户可以在块的属性对话框中的输入/输出栏中,查看并修改所有输入/输出的属性,也可以在图表中双击某个输入/输出点,单独编辑其属性。
图3-12: 块输入/输出的属性
# Name Value
输入/输出的编号 输入/输出的名称
用户可以在此设置此变量的数值
如果用户不希望显示此输入/输出变量,则可选择此项,这样可以减少块的显示大小
可以允许用户监视并修改变量值
Invisible
Watched
Identifier 可以显示非BOOL类型变量的标识,此标识文本将被用于在OS中显示 Text0 Text1
对于BOOL类型变量,当其为 0 时,用于显示的文本,例如:Close 对于BOOL类型变量,当其为 1 时,用于显示的文本,例如:Open 如果用户希望此变量作为参数,可选择此项,并可对其赋值 如果用户希望此变量作为信号,可选择此项,其数值来自于连接关系
Page 17-48
Parameter Signal
IA&DT Service & Support
3.4.1. 取反一个块的输入
对于块的BOOL类型的输入,S7-CFC提供了取反功能。用户可以双击某BOOL输入名称后,在属性中选择Inverted 选项,在输入取反之后,“0”将变为“1”;“1”将变为“0”。
输入取反
图3-13: 取反输入
注意事项:
如果复制一个取反输入的信号到另一个输入,新输入信号不会自动取反。用户必须自己明确是否取反
如果移动一个取反输入的连接到另一个非取反的输入,新输入信号不会自动取反,取反将被取消。
对于图表的输入/输出是不可以取反的,用户在连接中加入一个NOT 块来解决这一问题。
3.4.2. 使用数值标识
S7-CFC提供了数值标识功能。当用户定义了不同数值定义的标识后,即可使用。如下图中的输入变量IN_BOOL,用户可以定义当输入数值为“0”时显示“close”;当输入数值为“1”时显示“open”。如下图中的输入变量IN_WORD,用户可以定义当输入数值为“2”时显示“in123456”。
图3-14: 用户定义标识后的显示
当用户在LAD/STL编程环境下生成FB/FC时,对于其输入参数的属性,用户可以添加数值标识。下图为FC60的BOOL类型输入参数的属性修改界面。对于BOOL输入类型,允许的参数范围仅仅包括\"S7_string_0\" 及 \"S7_string_1\"。
IA&DT Service & Support
Page 18-48
输入参数属性
图3-15: BOOL输入参数属性
当用户在LAD/STL编程环境下生成FB/FC时,对于其输入参数的属性,用户可以添加数值标识。下图为FC60的WORD类型输入参数的属性修改界面。对于BYTE,INT, DINT, WORD, DWORD 输入类型,允许的参数范围为从\"S7_string_2\" 至\"S7_string_25\"。
图3-16: WORD输入参数属性
注意事项:
\"S7_string_0\" 及 \"S7_string_1\"可以用于BOOL输入类型,可以为最大16个字符的文本 \"S7_string_2\" 至\"S7_string_25\"可以用于BYTE,INT, DINT, WORD, DWORD 输入类型,可以为最大8个字符的文本
IA&DT Service & Support
Page 19-48
\"S7_enum\" :枚举数据类型, 主要用于PCS7中,其使用的数值定义需要在Configuring enumerations中定义。 可以用于BOOL, BYTE, INT, DINT, WORD, DWORD 输入类型,可以为最大16个字符的文本。其可以替代\"S7_string_0\" 至\"S7_string_25\"的作用,由于其主要用于PCS7中,超出了本文讨论的范围,此处不做详细介绍。
3.4.3. 定义数据归档
具有archiving和long_term archive 的变量将在编译OS时自动生成归档变量 \"No archiving\" (S7_archive:= 'false')输入/输出不会被归档 \"Archiving\" (S7_archive:= 'shortterm') 在OS上短期归档
\"Long-term archiving\" (S7_archive:= 'longterm') 在归档服务器长期归档,并且存储在CD,DVD,MOD,磁带等等。
所有具备OCM(可以被监视及控制)特性的数据(数据类型为BOOL,BYTE,WORD,DWORD,INT,DINT 及REAL)都可以被归档。
3.5. Interconnections(连接关系)
在一个CFC的Chart中,一个Interconnections(连接关系)可以连接:
一个block/chart的输出与相同的或其它的block/chart的一个或多个输入,输入与输出的数据类型必须一致。
一个block的输出与一个run-time group(仅BOOL数据类型) 一个chart 内的block的输入/输出与chart 的输入/输出 一个block 的输出与CFC外部的数据,例如共享地址
用户可以在Chart中,左键点击某个块的输入/输出管脚,并脱拽鼠标,在需要连接的其它管脚上方松开鼠标左键,即完成了新建连接关系的操作。
另外,用户也可以通过右键点击某个block的输入/输出时,组态与其它对象的连接关系,如下图所示(注意:点击输入或输出后,显示的内容有所不同)。
IA&DT Service & Support
Page 20-48
图3-17: 组态连接关系
3.5.1. 与共享地址的连接
当用户在连接组态界面下选择了“Interconnection to Address...”后,即可以组态共享地址连接,例如:共享数据块,I/O信号,存储位,定时器,计数器。用户可以从下拉列表中选择地址,也可以手动输入地址,地址的数据类型与block的输入/输出的数据类型要一致。
图3-18: 组态共享地址连接
3.5.2. 与Run-Time Groups的连接
用户可以动态地使能或禁止。用户可以将一个Block的输出连接到一个Run-Time Group,这样就可以控制其是否执行。在这种情况下,Run-Time Group属性“Active”的设置将不被考虑。
图3-19: 组态Run-Time Groups连接
3.5.3. 文本连接
用户可以对一个block/chart 的输入组态文本连接,此连接指向CFC中的另外一个block/chart的输出。如果用户输入的连接关系不正确(例如连接目标不存在,类型不匹配)则此连接处于“打开”的状态,此连接只有在闭合状态下才变为一个真正的连接。
当用户可以右键点击某个块的输入管脚,并选择“Textual Interconnection...”后,即可以组态文本连接。其格式为:(chart\\block.I/O),如果连接关系正确,CFC自动更改为标准格式。例如下图中的输入的文本为CFC (1)\\1.ERR,此连接关系实际为CFC (1) (A1)\\1.ERR(即CFC(1)的Sheet A, Sheet A 中6个区域中的区域 1,块编号为1,输出管脚标识为ERR)。
IA&DT Service & Support
Page 21-48
如果连接关系正确,CFC自动更改为标准格式 Chart=CFC(1) Block=块编号为1管脚=ERR输出
图3-20: 组态文本连接
如果用户输入了一个错误的文本连接,则系统使用黄色的三角标志显示,直到用户更改正确为止。
错误连接
图3-21: 错误文本连接
3.5.4. 组态数据结构之间的连接
通过使用数据结构,用户可以将任意数据打包为一个结构体,并将其定义为一个block 的输入/输出。在Block的显示部分,一个结构拥有一个输入/输出名称,数据类型为“ST”。
一个结构可以包括多个元素(最大嵌套深度为8层):
• 基本数据类型(BOOL, WORD...) • 结构
一个结构体包括如下信息:
• 数据类型(基本数据类型,否则为“ST”) • 名称
• 数值(仅仅与基本数据类型相关)
连接
一个block结构类型的输入/输出仅仅可以与另一个结构体相连接,而不可以与基本数据类型连接。连接的结构体必须要一致,包括结构体内的基本数据类型,顺序,名称,都要一致,但结构体的名称可以不同。结构体内的基本元素不可以单独与另一个结构体内的基本元素进行连接, IA&DT Service & Support
Page 22-48
结构体只可以作为整体与其它结构体相连接。 与共享地址的连接
一个block结构类型的输入/输出不可以与一个完整数据块进行连接(DBx),其可以与数据块中的第一层数据结构相连接(DBx.name_st)。与之相类似,对于基本数据类型,其只可以与数据块中的第一层基本元素相连接(DBx.element)。
3.6. 运行时间属性
块的运行时间属性决定了此块在整个CPU结构中的运行顺序。此属性决定了一个目标系统的响应时间,死区时间,以及与时间相关系统的稳定性。当每个block被插入时,系统都将赋予其默认的运行时间属性。
3.6.1. 块的运行时间属性
块的运行时间属性以彩色背景显示
块编号 1/5表示runtime group 有5个块,这个块位于第一个位置
图3-22: 块的运行时间属性
3.6.2. CPU的运行时间属性
用户可以通过菜单“Edit>Run Sequence...”切换至 run-time editor 。在此界面下,用户可以查看CPU的运行时间属性。此界面下分为三层结构:任务/runtime group/block。用户可以展开/收起这些分层目录来查看整个项目的运行时间属性。也可以选择某个runtime group/block后,使用左键托拽的方式来改变其所在 任务/runtime group 中的顺序。
IA&DT Service & Support
Page 23-48
切换至Runtime editor Runtime groupRuntime group中包括的block图3-23: CPU的运行时间属性
Block的run-time 属性
3.6.3. 生成Runtime Group
当用户使用右键点击某个任务后,选择“Insert Runtime Group…”后,可以添加新的Runtime Group,另外,当用户在S7program/charts目录下插入一个新的CFC程序时,系统将默认在OB35中生成一个新的Runtime Group。如果用户不更改chart 的插入点,用户所新添加的chart 都将位于OB35当前的Runtime Group中。如果用户希望在其它任务中插入新的chart,可以选择此任务(例如OB1),并选择“Predecessor for the Next Chart Insertion…”,则当用户在S7program/charts目录下插入一个新的CFC程序时,此chart 将被添加到当前任务位置例如(OB1)。
如果用户希望改变chart插入的位置,可以在此更改
图3-24: 添加Runtime Group 及安装点
IA&DT Service & Support
Page 24-48
3.6.4. Runtime Group的属性
当用户使用右键点击某个 runtime group 后,选择其属性,可以看到如下界面,其中包括如下重要属性:
图3-25: runtime group运行时间属性
• Scan rate:决定当任务被执行时,runtime group是否在每个任务执行周期,还是间
隔多个任务周期被执行。数值范围:共16个数值可供选择,2,2,2,… 2。例如:OB33的执行周期为 500 ms,则可能的scan rate为: 1s, 2s, 4s, 8s, 16s 。 • Phase offset:数值范围:大于等于0,小于所选择的Scan rate。例如:OB33的执行
周期为 500 ms,Scan rate为16,Phase offset为3,则此runtime group执行的时间为1.5s; 9.5s; 17.5s 等等。 •
0
1
2
15
Active:用户可以决定是否激活此runtime group
3.7. 编译
用户可以将chart编译为一个程序或者一个FB。默认情况下,chart将被编译为一个程序。CFC使用的编译器为SCL。
3.7.1. 将chart编译为程序
用户可以通过菜单“Chart > Compile > Charts as Program...”进行编译,或者直接点击工具栏中的编译图标来编译程序。
当编译时,CFC程序将被镜像为FC及DB。 需要生成FC的情况:
IA&DT Service & Support
Page 25-48
• 每个使用的OB 需要一个FC • 每个Runtime Group 需要一个FC
需要生成DB的情况:
• 需要为每个FB的背景数据块生成一个DB
• 为了保存每个FC的中间结果,需要生成CFC内部DB,每种数据类型需要一个DB。当其
达到最大长度时(4 Kbytes),在添加新的DB
注意:在用户在编译界面中如果没有选择“Make Textual Interconnections”,这些连接不会转换为真正的连接。这些相关的参数将使用默认值。
3.7.2. 将chart编译为FB
用户可以通过菜单“Chart > Compile > Charts as Block Type...”将chart编译为一个FB。
FB编号 不同产品系列选择
图3-26: runtime group运行时间属性
Compile for CPU
由于S7 300 / S7 400拥有不同的启动OB, 所以此处的选择将会使编译生成的FB代码不同。 Optimize code for(优化方式)
· Local data requirements:(本地堆栈要求)
当用户修改chart时,这种代码优化方式不增加本地数据堆栈的需求。所有的临时变量都将 IA&DT Service & Support
Page 26-48
被存储于背景数据块(VAR区域)。然而当用户更改chart时,这种方式导致了背景数据块时间标签的改变,因此,用户无法实现在线模式下下载。 · Download changes in RUN
当用户修改chart时,这种代码优化方式将把临时变量都存储于VAR_TEMP区域中。而VAR_TEMP将使用CPU的本地数据堆栈。这样当用户更改chart时,不会导致背景数据块时间标签的改变。因此,用户在多数情况下可以实现在线模式下下载,但此种方法的缺点是增加了本地数据堆栈的需求。 Know-how protection
当用户使能此项时,仅仅当SCL源文件存在时,生成的块可以被察看及修改。
3.8. 下载用户程序至目标系统
对于CFC生成的程序,由于CFC可以保证AS(控制器)中的数据一致性,所以用户必须使用CFC编辑器下载程序至目标系统。对于复制/下载离线Blocks文件夹中的blocks至在线文件夹的操作,是不允许的。如果用户程序还没有进行过编译,系统将提示用户进行编译操作。
3.8.1. 下载完整程序(Entire program)
用户可以在CPU 处于STOP或RUN-P模式下,进行下载完整程序(Entire program)操作。在用户确定提示对话框后,CPU中的所有块将被清除,并切换到STOP模式。在下载成功后,系统将提示用户是否启动CPU。
3.8.2. 仅下载改变(Changes only)
用户可以在CPU 处于RUN-P模式下,进行仅下载改变(Changes only)操作。为了防止CPU进入STOP状态,系统将进行一系列检查。但无法确保CPU肯定不会切换到STOP模式。当项目中存在时间戳不一致的情况下,无法进行Change only 下载。 注意事项:
• 如下情况用户可能执行仅下载改变操作:
¾ 用户至少执行过一次完整下载 ¾ 下载已经下载过的程序结构
IA&DT Service & Support
Page 27-48
• 在CFC的“Options>Customize>Compile/Download…”界面中,提供了“Compress”选项,
如果用户选择了此选项,则与前面的CPU压缩空间不同,每次编译时,CFC将压缩FC/DB的编号范围,此时就无法在进行仅下载改变(Changes only)操作。
• 下载完整程序并不意味着要编译完整程序,如果程序已经编译并被下载到了CPU中,用户可
以进行仅下载改变(Changes only)操作
• 用户可以随意编译程序(changes only or entire program),此操作不影响用户是否可
以进行仅下载改变(Changes only)的操作。
• 如果一个仅下载改变(Changes only)的操作失败,用户可以重新尝试下载剩余部分 • 如果用户改变了程序,并且在其它系统或PLCSIM上进行测试,随后则用户不可以在原CPU
上进行仅下载改变(Changes only)的操作。
3.8.3. 防止CPU进入STOP状态
在编译及下载的操作时,系统将进行一系列一致性检查来防止CPU在下载时进入STOP状态。 编译
• 进行包括块层次调用及时间标签的一致性检查,
• 检查需要的最大本地数据堆栈并与所组态CPU所拥有的资源相对比,如果超出用户在
(Options > Customize > Compilation)中设定的数值或CPU资源的100%,则产生一个警告。
• 检查嵌套深度,如果超出,则停止编译并报警。 • 检查OB,确保其调用的FC已经被CFC生成,否则将报警。
• 在编译之后,检查S7通信的背景数据块,并与CPU允许的最大通讯任务数量来对比,如果超
出用户在(Options > Customize > Compilation)中设定的数值或CPU资源的100%,则产生一个警告。
所有的警告消息将中止后续的下载操作。 下载
• 进行包括块层次调用及时间标签的一致性检查,
• 检查需要的最大本地数据堆栈并与在线CPU所拥有的资源相对比,如果超出用户在(Options
> Customize > Compilation)中设定的数值则,则产生一个警告。如果超出CPU资源的100%,则取消下载。
IA&DT Service & Support
Page 28-48
• 检查需要的存储空间。如果超出CPU资源的100%,则取消下载。如果超出用户在(Options >
Customize > Compilation)中设定的数值则,则产生一个警告,并提示三种操作选项: ¾ 压缩CPU内存 compress the CPU memory
¾ 跳过压缩并继续下载(责任用户自负)skip compression and continue the download
(responsibility of the user) ¾ 取消下载cancel the download • 如果超出CPU资源的100%,则取消下载。
类型导入(Type import)
当一个被调用的块的时间标签显示其拥有不同版本时,系统将弹出此块调用层次的对话框,用户可以在此更新此块。当此块更新后,调用此块的其它块可能将无法执行。
例如:FB61调用FB46,当这两个块都重新导入更新后,调用FB46的FB202如果没有被更新,FB202可能会访问修改过的参数。因此用户可以通过菜单“Options > Chart Reference Data...> Block Call Hierarchy”,来查找相应块调用的层次,并导入相应的块。 复制/移动(Copying/moving)
当用户复制/移动多重背景的功能块时,需要同时复制所调用的块。 选项:包括用户数据块(Include user data blocks)
当用户下载时,如果此选项被选择,CFC区域外的数据块将被按照如下规则处理: • 如果是新添加或时间标签不同的数据块,则它们将被下载 • 如果在S7 program文件夹下不存在,则将删除CPU中的数据块
当用户下载时,如果此选项未被选择,则CFC区域外的数据块将被按照如下规则处理: • 如果数据块在S7 program文件夹下存在,但在CPU中不存在,下载将被终止,并报警。 • 如果在S7 program文件夹下不存在,但CPU中存在数据块,则系统报警;如果数据块的时
间标签不一致,系统也将报警。用户可以自行修改相关数据块。
3.9. 回读Chart
3.9.1. 修改过的数据Modified Data
当激活的chart中的参数被OS或操作面板修改后,用户可以通过回读(read back)CFC charts的方式来保存这些参数数值。
IA&DT Service & Support
Page 29-48
3.9.2. 回读Reading Back
用户可以通过菜单“Chart > Read Back.... ”调用回读功能,如果用户选择“Program on the CPU”作为数据源,则CPU中当前的块及参数被回读到chart 文件夹中。
另外用户也可以通过SIMATIC Manager的“Upload”命令,事先上载CPU中的数据,并存储到离线文件夹中。此时,用户CFC的回读界面中就可以选择“Program Offline”作为数据源。
以上两种情况下,用户都可以选择是否回读所有块的所有输入参数,或者仅仅会读具备系统属性“operator control and monitoring (S7_m_c:='true')”的参数,或者具有回读属性的参数(S7_read_back := 'true')。
图3-27: 回读Reading Back
3.9.3. 回读之后
为了保证一致性,在回读操作后,整个程序将被自动重新编译。这并不意味着完整下载程序,用户可以进行仅下载改变操作。在回读操作之后,用户可以通过菜单“Options > Logs > Read Back”,来查看那些I/O被回读,以及什么地方发生了错误。 注意事项:
• 仅仅 Inout, input 参数可以被回读(output 参数不可以) • 当回读时,参数类型ANY, ARRAY, POINTER, UDT 被忽略 • 对于SFC有些操作的Input参数不会被回读
• 如果CPU中的数值被更改,并且被回读,这些修改的数值将被标志为已经下载,当用户下载
改变至CPU时,这些数值不包括在内。
• 回读可以读取完整块(例如BATCH块),这种情况下系统属性S7_read_back :='false'
IA&DT Service & Support
Page 30-48
• 对于 H CPUs,如果 H CPU处于solo模式,将出现选择对话框,用户可以选择读取的CPU,
如果CPU处于冗余模式,此对话框不出现。
• 当进行硬件下载操作时,处于工作内存的参数将会被装载内存中的数据所覆盖。如果用户
在下载硬件组态之前进行了回读操作,则可以使用完整下载的方式来解决。 • 如果选择回读“OCM-capable parameters”,FC 的input 将被忽略。
• 如果选择回读“All parameters”,与chart I/Os 有连接的FC的input 将被回读。
3.10. 测试及调试
CFC编辑器提供了监控功能,激活的chart 中的输入/输出在测试模式下可以被监控,默认更新周期为2秒。用户可以通过菜单“Debug > Test Settings...”来修改此数值。
3.10.1. 测试模式Test Modes
测试模式包括两种方式:
• Process Mode:用于块的在线动态显示的通信负荷受到,仅仅导致CP或总线上存在有
限的通信负荷。当测试模式被激活后,所有的块都处于“watch off”状态,如果用户希望监控莫个块,或者输入/输出,可以单独选择此对象后,然后通过菜单“Debug > watch on”来使能监控功能。
• Laboratory Mode: 对比于Process Mode,此方式通信负荷不受,当测试模式被激活
后,所有的块都处于“watch on”状态。
当用户选择具体测试模式之后,可以通过菜单“Debug > Test Mode”来激活测试模式
3.10.2. 监控块的输入/输出
用户可以通过点击工具栏中的图标来决定是否监控chart中的某个对象。当数值被监控时,有三种显示情况:
• 黄色背景的黑色星号:数值改变为动态显示 • 黄色背景的黑色数值:数值读取于CPU • 红色背景的####: 数值无法显示
当用户使能测试模式后,即可更改未连接的输入信号的数值。可以双击某个输入管脚后,进行修改,界面可参考下图:
IA&DT Service & Support
Page 31-48
使能测试模式 这两个图标决定某模块是否被监控 这两个图标决定某变量是否被监控 监控显示表示此变量无法被监控
图3-28: 监控界面
注意事项:
用户无法监视如下信息:
• 未存储在DB中的block 的输入/输出
• 未连接的FC或BOP(基本操作,例如AND, OR)等的输入, • 数据类型为STRING, DATE_AND_TIME, ANY的输出
在测试模式下,如果功能块(FB)的EN=0,则功能块连接的输入不显示,其显示当功能块最后一次被调用时的数值;当功能块的EN由 0 变为 1 时,这些数值将被刷新。而对于FC及BOP的输入,一直显示所连接的数据源的数值。
3.10.3. 动态显示(Dynamic Display)
在测试模式下,block及chart 的输入/输出可以在窗口中被动态显示。可支持基本数据类型(BOOL, WORD等)及结构中的基本数据类型。用户通过菜单:“View -> Dynamic Display”中可以打开此窗口。
IA&DT Service & Support
Page 32-48
在不删除变量的情况下,是否显示此变量
变量的数值 图3-29: 动态显示窗口
当用户希望监视某个变量时,可以通过右键点击某变量,选择“Insert in Dynamic Display”,则此变量将被添加到动态监视窗口,同时动态监视窗口也将被打开。当此窗口被关闭时,所显示的变量也将被记录,当下次打开此窗口时,这些变量还将被显示。
4. CFC应用于虚拟工程
4.1. 虚拟工程工艺要求
下面将以一个虚拟工程中的产品合成环节来举例说明CFC的使用,此工艺环节要求: 采集模拟量输入数据 输入滤波选择
PID 控制(手动/自动切换控制) 模拟量输出
4.2. CFC简单示例
在下面的例子中,将编写一个CFC用于PID控制的程序:
PID 程序编写在 OB35 中,并调用工艺参数环节的SCL程序及STEP7 标准功能块 完整虚拟工程的程序可编写在 OB1 中(限于篇幅,省略) 程序流程:
将模拟量输入进行 WORD 至 INT 的转换,送至软件滤波功能块的输入
将模拟量进行工程量转换,选择是否进行软件滤波,否则将实时值送至PID模块 滤波值/实时值的工程量作为过程变量送至PID功能块 PID 功能块的输出送至 FC106 进行输出值转换 IA&DT Service & Support
Page 33-48
FC106 的输出值进行INT至WORD转换,送至模拟量输出模板
1) 添加CFC程序
图4-1: 添加CFC程序
2) 程序文件夹下增加了 Charts 文件夹及CFC文件,双击打开CFC
图4-2: 打开CFC
3) CFC页面视图
IA&DT Service & Support
Page 34-48
点击sheet view进入页面视图 页边条,显示连接的源端或目的端
图4-3: CFC页面视图
4) CFC当前所处位置
位于OB35点击run sequence 可查看当前CFC在项目中的位置
图4-4: CFC当前所处位置
5) 调用其它功能块
IA&DT Service & Support
Page 35-48
调用FB1
图4-5: CFC调用其它功能块
6) 调用分配地址连接
在CONVERT组中调用WORD转换INT功能块,并分配地址
图4-6: 分配地址连接
7) 内部连接只要数据类型一致,直接托拽就可建立连接 IA&DT Service & Support
Page 36-48
图4-7: 内部连接
8) 调用CFC Library > ELEM 400 CPU程序库中的PID模块,此处由于和前面的FB1重名,更
改名称为FB10
调用S7-400 CPU的PID功能块FB1(更名为FB10)
图4-8: 调用CFC程序库
9) 依次调用CFC块中的MULTIPLX>SEL_R进行实数选择,标准程序库中的Standard IA&DT Service & Support
Page 37-48
library>TI-S7 Converting Blocks中的FC106进行模拟量输出,Conversion INT -> WORD进行数据类型转换。
图4-9: 调用STEP7标准程序库
10) 模拟量输入滤波
WORD->INT类型转换 滤波使能为1,则选择滤波值,否则为实时值
图4-10: 模拟量输入滤波
11) 手动/自动切换无扰动处理,将LMN值送至MAN IA&DT Service & Support
Page 38-48
手动/自动手动切换无扰动处理
图4-11: 手动/自动切换无扰动处理
12) 输出处理
输出转换PID输出 类型转换模拟量输出
图4-12: 输出处理
13) 程序图,连接关系标号可以减少交叉连线,连接关系标号一致则相通 IA&DT Service & Support
Page 39-48
连接关系1连接关系1
图4-13: 程序图概览
14) 将原来的OB35,OB100中的程序删除,准备编译,打开菜单Options -> Customize ->
Compile/Download选项,这里将FC number from 更改为1-150。
使用的CPU 注意此处留给用户其它程序的资源设置 使用CPU的性能 超范围
图4-14: 编译/下载设置
IA&DT Service & Support
Page 40-48
15) 选择File->Compile,经过编译没有错误后,项目Blocks目录下会自动生成很多SCL编写
的程序块及数据块,OB35,OB100也变更为SCL编写。
图4-15: 编译程序
16) 下载程序后,在菜单Debug-> Test Mode更改为测试模式,监控程序
选中变量后监控选中模块后点击监控使能测试模式 监控显示
图4-16: 监控程序
17) 在 View -> Dynamic Display 中可以监控变量 IA&DT Service & Support
Page 41-48
图4-17: 监控变量
至此,一个简单的CFC程序示例就结束了,本文中仅是对其非常简单的作了介绍。任何编程语言都有其复杂性,并非一朝一夕就可掌握,关于CFC的具体使用,请按照本文提供的的地址连接下载 CFC 手册。 重要提示:
本文的虚拟工程与真实工程实例有重大差别,示例中并未遵循规范的工程设计流程进
行编程,请读者切勿将其与工程实例相混淆。
由于此例子是免费的,任何用户可以免费复制或传播此程序例子。程序的作者对此程
序不承担任何功能性或兼容性的责任,使用者风险自负。 西门子不提供此程序例子的错误更改或者热线支持。
5. S7-CFC常见问题
5.1. 与监控调试相关问题
5.1.1. 问题:在S7-CFC中如何监控单独的FC ?
问题:在S7-CFC中如何监控单独的FC ?
解答:当编译CFC chart时,在中间步骤中系统会创建带有“@SCLFileFromCFC_SFC...”名称的S7-SCL源程序,用户可以将这个S7-SCL源程序单独编译,并且必须使能编译选项中的“Create debug info”。在SCL编辑器中将程序下载到CPU,在S7-SCL源程序中必要位置设置并激活断点,用户可以使用断点调试功能,同时在在CFC图中打开在线视图进行监控。 注意事项:
在用S7-SCL编译器编译后,不能通过CFC装载,因为它显示项目不一致并建议重新进行编译。对于这种调试方法,并不建议使用。
IA&DT Service & Support
Page 42-48
5.1.2. 问题:对于内部嵌套功能块连接有何?
问题:对于内部嵌套功能块连接有何?
解答:对于内部嵌套功能块连接需要遵循如下规则:
• • •
内部嵌套的功能块的I/O不能与Chart的I/O相连接。
一个block的IN类型参数可以与chart 的 IN 或 IN_OUT类型的参数相连接。
一个block的ANY类型的I/O 参数可以与chart 的基本数据类型的I/O相连接 (指针除外)。
• 不同的逻辑控制器类型,各数据类型之间互连的兼容性各不相同。如果不兼容,则连接过程中会显示相应的错误信息。
• 用户不能为Chart的输出分配参数,用户可以通过为其相连接的功能块的输出分配参数,相应的值即被赋予到相应的Chart输出中。
• FC的结构化输出变量不能与Chart I/O相连接
5.1.3. 问题:编译时出现信息“SCL 编译器不能执行”或“块中符号名称太多”?
问题:如何避免编译CFC程序时,出现信息“SCL 编译器不能执行”或“块中符号名称太多”? 解答:在CFC中生成的 S7-SCL 源代码不能在 S7-SCL 中直接打开和编译。上述现象和信息可能会在大的CFC项目中出现, 并且在有大量 S7-SCL 源代码的情况下也会出现。 SCL 编译器的注意事项:
当使用 S7-SCL 编译器编译chart时,请确认在一个任务或运行系统组中没有安装太多块;否则,块就会变得太多和太大,导致 S7-SCL 编译器出现上述错误信息。可通过分割块为几个运行系统组以避免这一情况。在编译过程中会产生一些小的函数 ( FC) 。在S7-SCL编译器中大的 CFC 结构的编译过程需要花很长时间;在某些情况下,可能会有几分钟没有进程指示。
5.1.4. 问题:CFC中最多能够显示多少个输入/输出?
问题:CFC中最多能够显示一个block的多少个输入/输出? 解答:大约160个输入及160个输出可以被显示。
5.1.5. 问题:在LAD编辑器中启用监控功能时,为什么会出现信息“30:484”?
问题:在LAD/FBD/STL 编辑器中启用“Monitor”功能时,为什么会出现信息“30:484”( 在线-
IA&DT Service & Support
Page 43-48
离线差异)?
解答:如果在“Monitor”功能被启用后,信息“30:484”(在线-离线差异)出现在LAD/FBD/STL编辑器中,是由于在线块和离线块间的时间标签不同引起的。由于涉及块顺序的在线信息不能分配到离线块单独的程序单元中,块状态不能显示。 下述情况会发生所描述的现象 :
a) 完成离线块(LAD/STL/FBD编辑器)中的改变,将变化载入到CPU中,不保存变化,关闭离
线块,然后再次离线打开这个块并启用“Monitor”功能。
b) 完成离线块(LAD/STL/FBD编辑器)中的改变,将变化载入到CPU中,离线保存它,关闭块,
然后将块的另一版本复制到离线程序中或载入到CPU中,当重新打开离线块时启用“Monitor”功能。
c) 完成离线块(LAD/STL/FBD编辑器)中的改变,将其载入到CPU中,然后将块的另一版本复
制到CPU中并在块仍打开时启用“Monitor”功能。
请注意在以上假设b)和c)中块也可从其它应用中载入。记住使用CFC时,装载管理完全由CFC保证;也就是说,除了CFC装载功能外,不应当使用其它功能来装载块到CPU (例如通过SIMATIC管理器或LAD/STL/FBD编辑器装载单独的块,除非这些块是S7-CFC之外不相关的块) 。CFC装载管理包含块目录中所有块,不仅是CFC的块!由CFC创建的程序必须总是由CFC下载到PLC,因为只有这个装载功能能够保证配置数据与PLC数据一致。
5.2. 与使用技巧相关问题
5.2.1. 问题:如何将OB的本地数据传送给CFC的chart 使用?
问题:如何将OB的本地数据传送给CFC的chart 使用?
解答:在CFC中,用户可以将CFC chart编译成功能块,并型在OB中进行调用,对于OB的本地数据(例如OB1的扫描时间)可以将其赋值给chart 的I/O,以供其使用。 用户可以按照如下步骤来实现此功能:
• 通过CFC菜单 \"View > Chart I/Os\" 定义chart接口,分配输入、输出、输入输出的变量
名和数据类型。这些参数的数据类型必须与需要使用的OB本地变量的数据类型一致(例如:临时变量\"OB1_MIN_CYCLE\"的数据类型为 INT)。
• 在CFC中,通过菜单命令\"Chart > Compile > Chart as Block...\" 打开 \"Compile chart
as block type\"对话框。
• 在\"General\"项中分配FB号,在\"Compile for CPU\"下选择 S7-300或者 S7-400 IA&DT Service & Support
Page 44-48
• 确认 \"OK\"。组态的CFC chart就会被编译成一个功能块。
• 在STEP7项目中,打开OB1,调用CFC块。CFC块将会在\"FB blocks\"中找到。给FB块分配
一个背景数据块,将本地变量赋值给此FB的输入/输出。
5.2.2. 问题:如何将“MUL_R”块和“DWORD”的操作数互连到一起?
问题:如何才能将“MUL_R”块和一个数据类型为“DWORD”的数据块的操作数互连到一起? 解答:“MUL_R”块将输入相乘,在输出上输出乘积。只允许使用 REAL 数据类型来设置此块的输入和输出。如果要使用“MUL_R”块来组态“DWORD”类型的数据块的操作数,则必须在输入上放置一个“DW_R”块 (用于转换),并在输出上放置一个“R_DW”块 (用于转换回到原类型)。 注意事项:
• 在CFC中不同的数据类型相连各不相同。然而,所有的数据类型总共可分为两类(基本数
据类型,复合数据类型)。所有数据类型相连的原则就是他们必须相互兼容。 • ANY型数据类型可以与上述的所有数据类型相连
• 在CFC中不支持数组类型(ARRAY)数据。也就是说,在CFC图中不支持带有数组型连接参
数的功能块。
• 功能块(例如“与”门)的输出不能与图形连接的IN_OUT参数相连
5.2.3. 问题:如何添加S7-CFC之外的 DB 和 FC ?
问题:在使用S7-CFC编程时,如何添加S7-CFC之外的 DB 和 FC?
解答:在S7-CFC的编译选项中,为用户预留了一部分资源,如果用户希望在blocks文件夹中添加其它非S7-CFC类型的其它程序,可以使用这个编号范围。在此编号范围内的FC/DB不受S7-CFC编译的影响,用户可以自由选择编写这些块的语言,单独下载/调试。
IA&DT Service & Support
Page 45-48
使用的CPU 注意此处留给用户其它程序的资源设置 超范围
图5-1: 编译/下载设置
5.2.4. 问题:如何启用CFC chart的加密功能?
问题:如何启用CFC chart的加密功能?
解答:可以启用CFC chart的加密功能分为两种情况。
1. 情况1:chart作为完整程序时启用专有知识保护 • • • • •
打开一个 CFC chart
使用菜单功能 Chart > Compile > charts as program
编译后,源程序文件夹中自动生成一个“@SCLFileFromCFC_SFC...”名称的S7-SCL源程序 打开 SCL 源文件并通过删除“KNOW_HOW_PROTECT”行中的//注释符号激活块保护。 编译更改后的 SCL 源文件,产生的功能便受到保护。块文件夹中将出现一个锁定符号表示功能受到保护。
• 最后,将文件夹“charts”从 SIMATIC 管理器中删除。注意:删除 CFC chart和文件夹“charts”后,无法再对块进行更改。
IA&DT Service & Support
Page 46-48
图5-2: 使能加密功能
2. 情况2:chart作为功能块时启用专有知识保护 • • • • •
打开一个 CFC chart
使用菜单功能 Chart > Compile > Charts as block type
在随后打开的窗口中,选择选项“Know-how-Protection”并点击 OK 确认。 在对块进行编译期间,产生一个 SCL 源文件和一个受保护的块。 在最后一步中,将 CFC 图和 SCL 源文件删除。
图5-3: 使能加密功能
6. 附录-推荐网址
6.1. 西门子自动化与驱动产品的在线技术支持
AS
IA&DT Service & Support
Page 47-48
西门子(中国)有限公司
工业自动化与驱动技术集团 客户服务与支持中心 网站首页:http://www.ad.siemens.com.cn/Service/AS下载中心:
http://www.ad.siemens.com.cn/download/DocList.aspx?TypeId=0&CatFirst=1&CatSecond=-1&CatThird=-1
专家推荐精品文档:http://www.ad.siemens.com.cn/Service/recommend.asp
“找答案”AS版区:http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1027
版权© 西门子(中国)有限公司2001-2008 版权保留
复制、传播或者使用该文件或文件内容必须经过权利人书面明确同意。侵权者将承担权利人的全部损失。权利人保留一切权利,包括复制、发行,以及改编、汇编的权利。
西门子(中国)有限公司
IA&DT Service & Support
Page 48-48
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务