作者 | 主题 |
---|---|
谦 总坛主 经验值:23745 发帖数:3792 精华帖:8 |
楼主 2011-08-16 15:13:16
主题:应用探讨——CFC编程应用探讨
CFC(连续功能图)是PCS7下的一种方便、简洁的编程环境,通过功能块互连的方式,既可以轻松自动实现跨AS的数据交换,也可以避免对诸如M、L等系统资源的管理,编程不再是一个面向繁琐数据存储单元的乏味劳动,而是将主要精力集中面向控制技术层面的全新工作。
和传统的STL、LAD等编程语言相比,CFC编程存在诸多的不同,所以在使用CFC的过程中,一方面可以积攒很多小技巧、小心得,另一方面也会碰到各种各样的问题,诸如: ? 逻辑没有问题,为何运算结果不正确 ? 编译的时候总是出现很多的Warning,会影响程序执行吗 ? CFC中功能块的消息组态,很多的$$是起什么作用的 ? CFC中功能块的高亮区都包含哪些信息,如何修改 ? “过程模式”和“实验室模式”有什么区别 ? 下载CFC的时候为什么会出现不同的方式选择,都有什么区别 ? …… 为此,我们专门开设这个集中交流的平台,大家可以就自己工程实施过程中碰到的CFC相关的的编程组态、编译下载中的问题、心得、技巧等,畅所欲言,分享切磋。正在使用或准备使用CFC进行程序编写的用户,也可以就自己的需求和大家来探讨,在扩展思路的同时,相信也会有意想不到的收获。 此次集中探讨将持续至9月14日,其中有突出表现的网友将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖金币;根据交流情况,会酌情赠送小礼品。 交流结束后将整理精华内容,供广大网友分享参考。 预祝大家交流愉快,收获丰富! 本次探讨的发帖整理请参见此处。 大家可以参考如下资料: S7-CFC编程 A0252 SIMATIC S7 CFC手册 24451339 CFC 功能块库 24451026 |
www123456 至圣 经验值:12296 发帖数:2433 精华帖:86 |
3楼 2011-08-16 20:54:04
主题:回复:应用探讨——CFC编程应用探讨
S7-CFC简介(转):
S7-CFC (Continuous Function Chart 连续功能图表) 具有以下特点: 通过绘制功能图表来自动生成程序 拥有强大的预制程序库,同时也可使用STEP7中的标准块 通过简单的连线来降低开发成本并减少错误 优化集成在STEP7中,与STEP7 兼容 适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinAC S7-CFC 不仅仅具有PLC典型的元素(例如 输入/输出,定时器,计数器, 符号表),而且具有图形化编程语言语言的特性,其非常适合于如下任务: 1.过程控制 2.系统工程 CFC 与SCL及STL:CFC会生成SCL代码,最终编译成STL。其代码量相对于STL 编程有所增加。 |
凌波微步 奇侠 经验值:8896 发帖数:2782 精华帖:72 |
7楼 2011-08-17 14:58:09
主题:回复:<b><font color=red>应用探讨——CFC编程应用探讨</font></b>
1.做项目就像做人,目光不能光放在眼前的这点利益。
2.做项目的最终目的是控制的结果与将来的维护,升级等 3.做项目也好比你SHOPPING,性价比比较重要,不一定那个要买最贵的,也不一定要买最便宜的。好的性价比才是我们大多数人选择的方向。 4.CFC仅是PCS7中的一个功能。其实现的方法,方案也在与开发者的灵活运用。 5.至于编译,我想任何语言都需要的。编译的功能是检查基本语法错误的一个标准方法。CFC的编译不仅仅是检查语法错误,还会做很多的功能。例如诊断信息的生成,系统文件的生成,OB的生成等等。因此CFC的编译虽然时间稍微长了一些,但其功能是全面的,不是片面的。 6.STL是种好语言,也是我们应该学会的。但各种语言的灵活运用才是王道。 7.STL编写自定义功能块,然后在CFC中运用是一种非常好的方法。 8.其实STL语言是面向更多熟悉代码语言的人群。LAD面向的是更多电气出身的人群,而CFC面向的是全部的人群,是一看就明白的一种直观性的语言。 9.CFC中的很多功能是一种优化,并不是无用的。例如运行组等。 10.其实我也是从PLC学起的。但是用CFC后,就真切的发现其可用性的强大。 11.CFC其实是从传统的DCS理念中应运而生的一个编程语言。很多传统的DCS的编程方式都是图表化的。 12.CFC不但可以作为编程界面,而且也可以利用CFC来编写FC,FB等功能块。 13.我觉得CFC的最大的亮点就是连线方式。不用像STL,LAD编写一个简单的数学逻辑需要很多的中间变量。 ------说了很多了。对于各种语言的使用其实我是这样认为的:不论何种语言都有其存在的必然性。都有其优劣特性。我们需要的是更深的了解其理念和使用方式。灵活使用,结合使用才是我们写好一个程序,做好一个项目的根本。 ------对于授权,价格问题,还是因项目成本而异吧。这个在很多时候是决定使用哪种语言的关键。 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。
不以物喜,不以己悲;
达则兼济天下,穷则独善其身。
|
药尘 游侠 经验值:532 发帖数:64 精华帖:1 |
14楼 2011-08-19 20:05:23
主题:回复:<b><font color=red>应用探讨——CFC编程应用探讨</font></b>
用PCS7编程比较简单,但是需要明白CFC的库文件,毕竟CFC不是自己编写的块,第二个需要强调的一点,请不要把PCS7和STEP7孤立开来,PCS7所有的程序全部都是以STEP7为基础的,请抓住最基础的,还有CFC是使用SCL为编程语言的,但是不代表LAD FBD STL就不能用了,CFC仅仅是一个FB,它无论用何种语言编程皆可,我看到有很多工程师为了学习写CFC块还学习SCL,精神委实可嘉,可以多学一种高级语言,但是我写过的很多CFC块仍然用LAD一样是可以实现的。第三,请区分TIA和PCS7,这个有极大的联系,但是又有很大的区别,在西门子的论坛里有这方面的知识,可以参考一下。
CFC跟我们以前的那种线性编程不同,它是一种简易的图表化线性编程,而在STEP7中还是属于一种模块化线性编程,这个需要区分清楚。 希望大家以后在学习PCS7里的CFC编程的时候,将其简单化,不要复杂化,有很多在STEP7中能使用的方法,在PCS7中一样可以使用。学习CFC和PCS7抓住基础才是真正的重点,这个基础就是STEP7。如果抓住了这个重点,相信大家肯定在这方面会进步的很快的。 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。 |
剑忠 奇侠 经验值:9228 发帖数:639 精华帖:57 |
25楼 2011-08-21 11:21:14
主题:回复:应用探讨——CFC编程应用探讨
关于CFC工具的编程中的一些常见问题,我搜索了一下我历年来在论坛中的一些问答,供大家分享。不完善之处,望大家补充;错误之处,望大家指正!
1、当选择编译下载时,系统出现“FC*isoutsideuserrange.”等提示的原因是:指用户手工创建使用了提示信息中的FC块编号,但该FC块编号超出了CFC编译工具为用户使用,而默认保留的FC块编号范围。处理方法如下:(http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=44004&cid=1035) (1)在“Options->Customize->Compile/DownLoad”的对话框中,可看见CFC工具默认保留为用户使用的FC块编号范围是60~700。 (2)用户可以更改CFC工具默认保留为用户使用的FC块编号范围,以满足用户需求。 (3)当然,也用户可以更改手工创建使用的FC块编号,以满足CFC工具默认保留为用户使用的FC块编号范围,而不致超限! 2、用CFC工具FB功能块中的一个参数量程既无须编译(Compile),也无须下载(download),只需让被修改的CFC功能块中在线(Online)即可修改了。方法如下: (http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=71736&cid=1035) (1)首先打开被修改的CFC功能块对象名; (2)然后鼠标点击CFC工具栏上的“TestMode(on/off)”按钮,或点击CFC窗口菜单“Debug”→“TestMode”项; (3)之后,该CFC窗口中的功能块就随即进入在线监控状态(Online),并且会看到一些功能块的I/O端口有黄色的数字动态显示; (4)最后,鼠标指向需要修改的功能块的I/O端口引脚后双击,在弹出的“Properties-Input/Output”(I/O参数修改对话框)中键入修改值后,“OK”按钮即可。 3、CFC嵌套图表相当于子程序吗?那这个嵌套图表怎么打开看看里面有那些逻辑?(http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=70650&cid=1035) (1)CFC嵌套图表是指用CFC工具编写,并只能由CFC工具调用的功能图块,也就算是CFC子程序吧! (2)CFC工具编写的功能图块参数定义,可在点击“视图(View)>图表I/O(ChartInput/Output)”后编辑和查阅。 (3)要在被调用的CFC嵌套图表(功能图块)中,查阅或编辑修改CFC功能图块,先将鼠标选中当前的CFC功能图块,然后右击鼠标;之后在弹出的浮动菜单中选择“Open(打开)”即可。 4、两个CFC功能块在不同的Charts里如何连线,或者在一个Charts里的不同Sheet表的CFC功能块块如何连线?方法如下:(http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=45213&cid=1035) 打开任意一个CFC块后,如果CFC编辑视窗在“Overview(概貌)”显示模式下,可看见共有6张Sheet,3行2列,左右排列;如果CFC编辑视窗在“Sheetview(表浏览)”显示模式下,则只能看见其中一张Sheet了。CFC的调用功能块则可放置在每张Sheet里。 (一)同一张Sheet内的功能块的连线: (1)鼠标点击一CFC块的I/O端口; (2)按住左键并拖放至另一CFC块的I/O端口上; (3)如果数据类型相同即连线上。 (二)不在同一张Sheet内的功能块的连线: (1)鼠标先点击(Click)一CFC块的I/O端口; (2)再打开另一CFC块的Sheet,并准确找到该CFC块的I/O端口上点击它(Click); (3)如果数据类型相同即连线上。 (三)不同CFC块内的功能块连线: (1)首先打开所有需要连线的CFC块; (2)然后找到一个CFC块的Sheet内的功能块/O端口上先点击(Click); (3)最后准确找到另一个CFC块内的Sheet内的功能块/O端口上点击它(Click); (4)如果数据类型相同即连线上。 5、CFC,在编译的时候提示DB、FC或者FB不在用户范围内,导致不能编译?处理方法如下(http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=44431&cid=1027) (一)任意打开一个CFC块后,点击菜单项“Options”→“Customize”→“Compile/DownLoad”; (而)在弹出的“SettingforCompilation/DownLoad”对话框中,可看见“FCnumbersfrom:”项.默认设置为“60to600”;“DBnumbersfrom:”项.默认设置为“1to60”; (三)尽量不要修改这些设置,但请一定要注意如下: (1)用户自定义DB块编号使用范围是:1~60; (2)用户自定义FB和FC块编号使用范围是:60~600; (3)超出以上使用范围的编号为系统占用。 6、编译的时候总是出现很多的警告(Warning)提示。通常原因是:超出了每个运行组所允许插入的CFC程序块数量。处理方法如下: (http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=36961&cid=1035) (1)任意打开一个CFC程序块,鼠标点击菜单栏“Options”→“Customize”→“Compile/Download”; (2)在弹出的窗口中,可看到“InstalledblocksperruntimegrouporOB:”项中,CFC编译系统自动默认设置的数值为50。即只允许每个运行组插入的CFC程序块数量为50。 (3)你可以修改“InstalledblocksperruntimegrouporOB:”项中的数值,但建议最好不要增/减允许值。 (4)如果数值超限后,最好是采用分离法。即先新建几个运行组,仍然由OB35块调用;再将“AI_CH”和“STATUS”运行组中的CFC程序块分离出去,放置在新建的运行组中,就解决问题了。 (5)注意:放置在新建运行组中的CFC程序块数量也不要超限,否则又会出现上述问题。 7、PCS7的Charts中有很多带@前缀标识是如何生成的? (http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=42101&cid=1035) (1)在“Charts”节点中带@的CFC功能块,一般是在使用PCS7软件版本里编译(Compile)CFC功能块时,勾选了“Generatemoduledrivers”之后自动生成的。当然你也可以手工组态编辑了。 (2)这些带@的CFC功能块主要用于本项目运行后,系统的诊断和报警信息向WinCC监控画面中实时传递,以方便操作与维护人员监控和分析系统的运行状况。 8、CFC中功能块的消息组态,很多的$$是起什么作用?可参见我在论坛“WinCC与STEP7集成方式做项目”主题讨论及分享中76楼和95楼的回答: (http://www.ad.siemens.com.cn/club/bbs/post.asp?myreply=1&b_id=5&a_id=864494&s_id=&num=126#anch) 9、什么类型的项目可以使用CFC工具编程?关于这个回答结论很多,参见如下: (http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=38543&cid=1035)
大学之道,在明明德,在亲民,在止于至善。
|
Ken(小释) 侠士 经验值:1886 发帖数:293 精华帖:19 |
27楼 2011-08-21 15:24:06
主题:回复:应用探讨——CFC编程应用探讨
下载时会出现 “仅更改”、“整站”下载。
仅更改下载是将仅仅改动的部分下载,不会造成CPU停机。 整站下载是会停机的! 1.CFC编译后会在block里面自动调用很多块,如果你的CFC在改动后有新的块被调用就只有整站下载可以选择,整站下载是会停机的! 2.在程序上还有个时间戳的概念,就是说在程序下载的时候会附带时间信息下载到CPU。举例:我们都有一个习惯就是,会一边编写程序。一边做程序归档备份。比如我在20110821 09:00做了备份,但是我09:00之后做了很多修改添加了很多功能。但是我在20110822 13:00最后一下下载程序后才发现很多程序是不对的。但是我记不清楚我修改过哪些了。那我就需要重新获取归档,恢复09:00的程序。但是PLC里面记录的时间戳是13:00的程序,那么我现在再下载早期的程序(附带早期的时间戳)就会造成PLC停机。 CFC其实是一种很方便的编程语言,形象直观,方便简单。
Ken(小释)…西门子自动化技术群16182848
|
www123456 至圣 经验值:12296 发帖数:2433 精华帖:86 |
34楼 2011-08-23 13:51:00
主题:回复:应用探讨——CFC编程应用探讨
梯形图一般说来对逻辑控制和需要用简单算法的对象比较方便,可以实现模块化编程。CFC一般说来对被控对象有较杂的过程计算更方便些。CFC的编程方式采用的是CHART图表式,执行按[输入接口]->[功能块]->[输出接口]次序,属于模块化的编程方式。内部连接只要数据类型一致,直接托拽就可建立连接,但容易引起交叉,感觉不简洁,其实可以使用连接关系标号,可以减少交叉连线,连接关系标号一直则相通,如下所示。另外,在CFC中,如下图中逻辑关系在一个页面中保留4个层级,尽量不放满,给人感觉直观,简洁,可读性好。
|